redis的配置文件常用配置项
daemonize yes/no
默认为no,redis不在后台运行,yes,redis在后台运行
pidfile /var/run/redis.pid
redis默认把pid文件放在这儿,可以更改,当运行多个redis服务时需要指定多个pid和端口
port 6379
默认的端口为6379
bind 127.0.0.1
默认只可以本机访问,远程需要进行绑定其他地址
timeout 0
设置客户机连接的超时时间,默认0即关闭该功能
loglevel debug/varbose/notice/warning
debug:记录很多信息用于测试和开发
varbose: 有用的信息,比debug少
notice: 普通的verbose,用于生产环境
warning: 只有非常严重才会记录
logfile stdout
默认值标准输出
logfile /var/log/redis/redis.log
配置输出文件
save
指过多少秒且多少次更新后就把数据同步到磁盘文件里
save 100 10
100秒内01个key被更改
rdbcompression yes
存储到本地数据时是否压缩,默认yes
dbfilename dump.rdb
默认存储到dump.rdb可更改
requirepass mypassword
修改密码
rename-command CONFIG defined
共享环境下可以重命名一些命令
rename-command CONFIG ""
删除只需要设置为空字符串
maxclients 128
同一时间最大客户连接处
maxmemory
当redis的存储数据的内存
redis-cli内的命令
启动redis服务
redis-server configpath
连接 redis-cli
redis-cli -h host -p port -a password
关闭redis
redis-cli shutdown save/nosave
保存或者不保存,异常关闭数据会丢失-
redis对key的命令
-
del [...keyname]
del a b c删除key,返回值为删除个数 -
dump key
序列化 - exists [...keyname]判断是否存在key返回对应的个数
-
expire key seconds
设置key的存活时间 -
ttl keyname
查看key的存活时间-1为永久 -2过期 非负数代表剩余存活时间 -
pexpire key mileseconds
以毫秒记过期时间 -
pttl keyname
以毫秒返回key的剩余时间 -
persist key
移除key的过期时间 -
keys partten
通过pattern正则查询符合的key -
rename oldkeyname new keyname
重命名key -
move keyname dbnumber
将key移动到另一个数据库中,配置文件可以更改数据库的数量,默认有16个从0开始,刚登录到数据库内是在0这个库中,同时keyname支持表达式进行多个同时转移 -
type keyname
返回值的类型 -
set keyname keyvalue
设置key,如果keyname重复那么值覆盖 -
get keyname
获取这个key的值 -
setnx keyname
在key不存在时才会设置 -
getrange keyname start end
截取字符串下标从0开始 -
strlen keyname
获取长度 -
incr keyname
使一个key自增一如果不存在则创建 -
incrby keyname num
自增设定的个长度 -
decr keyname
自减一个长度 -
decrby keyname len
自增设定的长度 -
append keyname value
在尾部拼接字符串
-
-
hash操作
-
hset keyname name xiaoming
keyname name重复就会覆盖 hget keyname name
-
hmset keyname name1 value1 name2 value 2
一次性设置多个值 -
hmget keyname name1 name2
一次性获取多个值 -
hgetall keyname
获取所有的值 -
hkeys keyname
获取所有的字段 -
hlen keyname
获取有多少个字段 -
hdel keyname fieldname
删除一个字段
-
-
list操作
-
Lpush keyname value1 value2...
从列表左边插入 -
rpush keyname value1 value2...
从列表右边插入 -
blpop list1 list2 timeoutseconds
相当于返回第一个素,如果list1有值返回list1第一个,如果没有list2返回第一个 -
brpop list1 list2 timeoutseconds
相当于返回最后一个素,如果list2有值返回list2最后一个,如果没有list1返回最后一个 -
lindex keyname index
按照下标查询元素不移除 -
llen keyname
获取list长度 -
lrange keyname start end
截取元素 -
lset keyname index value
修改某个下标的值 -
ltrim keyname start end
删除列表内的元素
-
-
set操作
-
sadd keyname value1 value2
添加元素不可重复 -
scard keyname
获取set的成员数 -
sdiff keyname1 [keyname2]
返回集合的差集 -
sdiffstore storename keyname1 [keyname2]
返回keyname1和keyname2的差集存储到storename中 -
sinner keyname1 [keyname2]
返回交集 -
sismember keyname member
判断member是否在可以那么集合中 -
smembers keyname
返回集合 -
srem keyname member1 member2...
移除一个或多个元素 -
sunion keyname1 [keyname2]
返回并集
-
-
redis支持5种数据类型
- string字符串
- hash哈希
- list列表
- set集合
- zset有序集
spring boot配置redis
-
pom.xml添加
org.apache.commons commons-pool2 2.6.0 org.springframework.boot spring-boot-starter-data-redis -
添加实体类
package com.store.store.cache; import lombok.Data; import org.springframework.stereotype.Component; import java.io.Serializable; @Component @Data public class User implements Serializable { private String userName; private Integer userId; private String sessionId; }
-
yml配置文件
spring: redis: host: localhost port: 6379 password: 123456 lettuce: pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0
-
测试类
@SpringBootTest class StoreApplicationTests { @Autowired RedisTemplate redisTemplate; @Autowired User user; @Test void contextLoads() { } @Test//普通string类型 void redisTestSet(){ user.setUserId(1); user.setUserName("zy"); user.setSessionId("2312"); redisTemplate.opsForValue().set("robber",user); } @Test void redisTestGet(){ System.out.println(redisTemplate.opsForValue().get("robber")); } @Test void redisDel(){ redisTemplate.delete("robber"); } @Test void redisString(){ redisTemplate.opsForValue().set("str","hello world"); } @Test//list类型 void redisList(){ ListOperations
listOperations = redisTemplate.opsForList(); listOperations.leftPush("mylist","first"); listOperations.rightPush("mylist","second"); listOperations.leftPop("mylist"); listOperations.rightPop("mylist"); System.out.println(listOperations.range("mylist",0,1));//截取下标为0开始 } @Test//set类型 void redisSet(){ SetOperations setOperations = redisTemplate.opsForSet(); setOperations.add("myset","hello"); setOperations.add("myset","world"); System.out.println(setOperations.members("myset")); } @Test//有序集合类型 void redisZSet(){ ZSetOperations zSetOperations = redisTemplate.opsForZSet(); zSetOperations.add("myzset","helloa",1); zSetOperations.add("myzset","hellob",2); zSetOperations.add("myzset","helloc",3); zSetOperations.add("myzset","hellod",0); System.out.println(zSetOperations.range("myzset",0,8)); System.out.println(zSetOperations.zCard("myzset")); } @Test//哈希类型 void redisHash(){ HashOperations hashOperations = redisTemplate.opsForHash(); //hashOperations.put("myhash","name","zy"); System.out.println(hashOperations.get("myhash","name")); } @Test//切换数据库 void showDataBase(){ LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory(); lettuceConnectionFactory.setDatabase(13); System.out.println(lettuceConnectionFactory.getDatabase()); } }