Redis
-
数据类型
- 五种基本
- 字符串 String
- 列表 List
- 集合 Set
- 有序集合 SortedSet 也叫ZSet
- 哈希 Hash
- 五种高级
- 消息队列 Stream
- 地理空间 Geospatial
- …
- 五种基本
-
启动:输入
redis-server
-
启动redis客户端:
redis-cli
-
操作
- String
set Name fyq
:添加get Name
:获取del Name
:删除exists Name
:是否存在keys *
:查找所有keykeys *me
:查找所有以me结尾的keyflushall
:删除所有keyttl Name
:查看Name键的过期时间 -1表示未设置expire Name 10
:设置过期时间为10ssetex name 5 fyq
:设置kv对过期时间为5ssetnx name zzx
:只有name不存在时才设置name的值,否则不做任何操作
- List
lpush letter a b c d e
:向letter列表头部(左边)插入abcderpush letter f
:向letter列表尾部(右边)插入flpop letter 3
:从头部一次删除3个元素,省略3表示删除1个rpop letter 3
:从尾部一次删除3个元素,省略3表示删除1个lrange letter 0 -1
:取letter表从0-结束位置的值,-1表示最后一个llen letter
:查看letter列表的长度ltrim letter 1 3
:只留下1-3之间的元素
- Set 元素不能重复
sadd courses a
:向course集合添加asmembers courses
:列出courses集合的值sismember course a
:是否存在asrem course a
:删除a
- ZSet 每个元素会关联一个浮点数
zadd school 680 北大 670 清华 650 浙大 640 复旦
:添加zrange school 0 -1
:输出所有元素,只有成员,没有分数zrange school 0 -1 withscores
:输出成员+分数zscores school 清华
:查看清华的分数zrank school 清华
:查看清华的排名 从小到大zrevrank school 清华
:查看清华的排名 从大到小
- Hash
hset person name fyq
:添加hget person name
:获取hgetall person
:获取所有的kvhdel person name
:删除hexists person name
:是否存在hkeys person
:获取所有键
- 发布订阅功能
subscribe geekfyq
:订阅geekfyq频道publish geekfyq aa
:向geekfyq频道发送aa,订阅了这个频道的client都能接收到
- 消息队列
xadd geekfyq * course redis
:向geekfyq频道发送course消息队列,内容加入redis,*表示随机生成一个idxlen geekfyq
:查看消息的长度xrange geekfyq - +
:查看所有的消息xdel geekfyq [id]
:删除对应id的消息xtrim geekfyq maxlen 0
:删除所有的消息xread count 2 block 1000 streams geekfyq 0
:读取消息,一次读2条,没消息时阻塞1000ms,从头开始读xgroup create geekfyq group1 0
:创建一个id为0的消费者组xinfo groups geekfyq
:查看消费者组的消息xgroup createconsumer geekfyq group1 consumer1
:创建consumer1,并把他加入到group1中
- 事务
- 与mysql不同,一个操作失败其他仍然会执行
multi
:开启一个事务exec
:执行事务 只有使用了exec
事务才会被执行,之前会被缓存到一个队列中
- 持久化
- RDB方式
save
:手工生成快照 会阻塞当前redis服务器,在save执行过程中,redis不能处理其他命令bgsave
:会新建一个线程执行快照操作,可以同时响应客户端请求
- AOF方式
- 将appendonly修改为yes
- 将执行的命令以日志的方式放入AOF文件中,重启redis后会重新执行AOF中的命令
- RDB方式
- String