redis5.0新特性
目录
Redis 5主要专注于几个重要功能。相比之下Redis 4非常非常专注于操作类型,Redis 5的变化大多是面向用户的。即在现有的基础上增加新的数据类型和操作类型。以下是此版本的主要功能:
redis5.0新特性
1 新的Stream类型
1.1 什么是Stream数据类型
- 抽象数据日志
- 数据流
2 新的Redis模块API:Timers and Cluster API
3 RDB现在存储LFU和LRU信息
4 集群管理器从Ruby(redis-trib.rb)移植到C代码
5 新的sorted set命令:ZPOPMIN/MAX和阻塞变种
6 主动碎片整理V2
7 增强HyperLogLog实现
8 更好的内存统计报告
9 许多带有子命令的命令现在都有一个Help子命令
10 客户经常连接和断开连接时性能更好
11 错误修复和改进
12 Jemalloc升级到5.1版本
13 安装和配置redis5.0
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 > 表示查询最新数据
15 help特性
- XINFO help
- PUBSUB help
- XGROUP help
- … help
- 有子命令的命令才可以用
16 redis集群
16.1 1.16.1. 创建集群数据存储文件
- mkdir -p /usr/local/redis-cluster
- mkdir 5001 5002 5003 5004 5005 5006
- 修改redis.conf配置文件,开启集群配置,aof配置等等
- 每个文件夹下配置的区别就在端口,统一命令修改
|
|
- 都启动完成后,创建六个子节点
- 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 以集群的模式进入
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会成为该主节点的从节点
16.3 分片
- ruby分片方法:redis-trib.rb reshard 192.168.4.147:5007
- 新特性分片方法:redis-cli –cluster reshard 192.168.4.147 5007
16.4 删除节点
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
16.4.2 删除主节点(需要先把数据槽移动到其他节点,再删除主节点,防止数据丢失)
- ruby删除方法:redis-trib.rb reshard 192.168.4.147 5007
- 新特性删除方法:redis-cli –cluster reshard192.168.4.147 5007
- done
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
16.5.1 测试
|
|
17 碎片整理和内存报告
17.1 应用场景
- 在运行期进行自动内存碎片清理,释放内存空间
- 通过内存报告了解整个系统的内存使用情况
17.2 使用
- 配置项中找到 activedefrag yes,去掉注解,它下面和它相关的注解都解开
17.3 测试
- 使用debug populate 300000 imooc 1000 随机产生300000个key为imooc开头的 大小为1000的数据
- info memory 查看内存使用情况
- MEMORY STATS 查看内存详情
- memory usage imooc:1 查看键值占用内存
其它:
网络层中的差异优化
Lua 相关的改进
引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性
17.3.1 support docker
现在官方版本正式支持在Docker容器上部署和运行Redis集群了。有了官方的镜像,你能非常容易并快速部署几个容器来运行一个可扩展的,高可用的Redis集群。