redis5.0新特性
程序员文章站
2022-04-28 11:41:36
1. redis5.0新特性 1.1. 新的Stream类型 1.1.1. 什么是Stream数据类型 1. 抽象数据日志 2. 数据流 1.2. 新的Redis模块API:Timers and Cluster API 1.3. RDB现在存储LFU和LRU信息 1.4. 集群管理器从Ruby(re ......
1. redis5.0新特性
1.1. 新的stream类型
1.1.1. 什么是stream数据类型
- 抽象数据日志
- 数据流
1.2. 新的redis模块api:timers and cluster api
1.3. rdb现在存储lfu和lru信息
1.4. 集群管理器从ruby(redis-trib.rb)移植到c代码
1.5. 新的sorted set命令:zpopmin/max和阻塞变种
1.6. 主动碎片整理v2
1.7. 增强hyperloglog实现
1.8. 更好的内存统计报告
1.9. 许多带有子命令的命令现在都有一个help子命令
1.10. 客户经常连接和断开连接时性能更好
1.11. 错误修复和改进
1.12. jemalloc升级到5.1版本
1.13. 安装和配置redis5.0
1.14. stream命令
- xadd
- 作用:创建一个stream
- 用法:xadd key id field string [field string ...]
- id:毫秒的unix时间戳 - sequence(同一毫秒的序列号)组成
- xadd wangzhe * hero luban 创建默认id的key为hero的流数据
- xlen
- 作用:返回stream中元素的个数
- 用法:xlen key
- xdel
- 作用:删除id
- 用法:xdel key id,返回删除个数
- xranger
- 作用:返回给定id范围内的stream数据
- 用法:xrange key start end [count count]
- 特殊id:+:最大id -:最小id
- xread
- 作用:从一个或多个stream读取数据
- 用法:xread[count count][block milliseconds] streams key [key ...] id [id ...]
- xread count 1 streams lol 1-1 读取流lol中从id为1-1开始的的1条数据
- xread block 0 streams key $ 永久堵塞,知道流key接收到最新数据,会显示阻塞时间
- xgroup
- 作用:创建一个consumer group
- 用法:xgroup create key groupname id
- xreadroup
- 作用:从consumer group中读取数据
- 用法:xreadgroup group groupname consumer [count count][block milliseconds streams key [key ...] id [id ...]
- xreadgroup group fashi chuanrong streams wangzhe > 表示查询最新数据
1.15. help特性
- xinfo help
- pubsub help
- xgroup help
- ... help
- 有子命令的命令才可以用
1.16. redis集群
1.16.1. 创建集群数据存储文件
- mkdir -p /usr/local/redis-cluster
- mkdir 5001 5002 5003 5004 5005 5006
- 修改redis.conf配置文件,开启集群配置,aof配置等等
- 每个文件夹下配置的区别就在端口,统一命令修改
:1,$s/5001/5002/g
- 都启动完成后,创建六个子节点
- ruby创建方法:redis-trib.rb create --replicas 1 192.168.4.147:500*
- 新特性创建方法:redis-cli --cluster create 192.168.4.147:500* --cluster-replicas 1
- 主/从 = 1 : cluster-replicas
- redis-cli -c -h 192.168.4.147 -p 5001 以集群的模式进入
1.16.2. 动态添加节点
- ruby添加节点:redis-trib.rb add-node 192.168.4.147:5007 192.168.4.147:5001
- 新特性添加节点:redis-cli --cluster add-node 192.168.4.147:5007 192.168.4.147:5001
- 添加从节点:redis-cli --cluster add-node 192.168.4.147:5008 192.168.4.147:5001
- 在5008的client命令行里,cluster replicate 主节点,那么5008会成为该主节点的从节点
1.16.3. 分片
- ruby分片方法:redis-trib.rb reshard 192.168.4.147:5007
- 新特性分片方法:redis-cli --cluster reshard 192.168.4.147 5007
1.16.4. 删除节点
1.16.4.1. 删除从节点
- ruby删除方法:redis-trib.rb del-node 192.168.4.147 5008
- 新特性删除方法:redis-cli --cluster del-node 192.168.4.147 5008 主节点唯一id
1.16.4.2. 删除主节点(需要先把数据槽移动到其他节点,再删除主节点,防止数据丢失)
- ruby删除方法:redis-trib.rb reshard 192.168.4.147 5007
- 新特性删除方法:redis-cli --cluster reshard192.168.4.147 5007
- done
1.16.5. 新的sorted set
- zpopmax
- 作用:删除返回集合中分值最高的元素
- 用法:zpopmax key [count]
- zpopmin
- 作用:删除返回集合中分值最小的元素
- 用法:zpopmin key [count]
- bzpopmax
- 作用:zpopmax的阻塞版
- 用法:bzpopmax key [key ...] timeout
4 bzpopmin - 作用:zpopmin的阻塞版
- 用法:bzpopmin key [key ...] timeout
1.16.5.1. 测试
zadd exam 100 daji zadd exam 99 xiaoqiao zadd exam 98 zhenji zadd exam 97 anqila zrange exam 0 -1 withscores 带分数的打印,从小到大输出 zpopmax exam输出最大分数的值,会从元素中删除
1.17. 碎片整理和内存报告
1.17.1. 应用场景
- 在运行期进行自动内存碎片清理,释放内存空间
- 通过内存报告了解整个系统的内存使用情况
1.17.2. 使用
- 配置项中找到 activedefrag yes,去掉注解,它下面和它相关的注解都解开
1.17.3. 测试
- 使用debug populate 300000 imooc 1000 随机产生300000个key为imooc开头的 大小为1000的数据
- info memory 查看内存使用情况
- memory stats 查看内存详情
- memory usage imooc:1 查看键值占用内存