Redis7.0新功能新特性总览

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Redis7.0新功能新特性总览

说明:本⽂根据Redis 7 RC2 的release note 整理并翻译

近⽇,Redis 开源社区发布了7.0的两个预览版。在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令或已有命令的新加参数,⼀些性能上的优化和提⾼,还有⼀些API的改变,并且修复了以前版本中的⼀些bug,下⾯让我们具体来看⼀下这些⽅⾯的内容。

Redis 7.0 包括了以下⼀些重要的变化:

1. 将AOF⽂件的存储⽅式改为在⼀个⽂件夹下存储多个⽂件。

2. 将持久化⽂件RDB的版本升级为10,与之前的RDB⽂件版本不再兼容。

3. 在读取⽼的RDB⽂件格式的时候将ziplist转换为listpack,这种转换发⽣于两种情况之下:从磁盘读取⽂件或者从⼀个主节点进⾏复制⽂件的时候。

4. 在redis.conf配置⽂件中,protected-mode 默认更改为yes,只有当你希望你的客户端在没有授权的情况下可以连接到Redis server的时候可以将protected-mode设置为no。

5. 在ACL中,pub/sub channel默认是被阻塞的。

6. 在从节点中,TTL的时间标识的是绝对时间,不再是相对时间,从⽽保证了过期数据被及时删除。

7. 不再⽀持 gopher协议。

8. 当在配置⽂件中设置replica-serve-stale-data=no,当主节点不再提供服务时,PING命令得不到返回值。

Redis 7.0 新特性其中的⼏个例⼦:

2. 集群⽀持显⽰主机名,⽽不仅仅显⽰ip地址。

3. 使⽤多个AOF⽂件降低了AOF重写期间的内存使⽤。

4. 在Lua脚本中⽀持了Function的标志。

5. 在AOF⽂件中增加了数据更新时间点的标识,使得⽤户可以恢复某⼀时间点的数据。

6. Lua脚本⽀持RESP3 版本的并且可以通过redis.REDIS_VERSION, redis.REDIS_VERSION_NUM得到Redis的版本。

7. 增加了对stream consumer组滞后的追踪和报告。

8. 增加了API以便于可以在functions和Lua脚本中明确地查看ACL。

Redis 7.0 新增14个⽤户端命令和 15个已有命令的相关参数选项,其中包括:ZMPOP, BZMPOP,LMPOP, BLMPOP等新命令,对于EXPIRE和SET命令,新增了更多的命令参数选项。

例如,ZMPOP的格式如下: ZMPOP numkeys key [key ...] MIN|MAX [COUNT count],⽽BZMPOP是ZMPOP的阻塞版本。

下⾯是⼀个使⽤ZMPOP的例⼦:

redis> ZMPOP 1 notsuchkey MIN

(nil)

redis> ZADD myzset 1 "one" 2 "two" 3 "three"

(integer) 3

redis> ZMPOP 1 myzset MIN

1) "myzset"

2) 1) 1) "one"

2) "1"

redis> ZRANGE myzset 0 -1 WITHSCORES

1) "two"

2) "2"

3) "three"

4) "3"

redis> ZMPOP 1 myzset MAX

1) "myzset"

2) 1) 1) "three"

2) "3"

redis> ZRANGE myzset 0 -1 WITHSCORES

1) "two"

2) "2"

Redis 7.0 新增10个管理和监控相关的命令及其相关参数选项,其中包括:COMMAND LIST,COMMAND INFO,CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE等。

Redis 7.0 新增配置选项:

1. maxmemory-clients 可以限定所有客户端使⽤的内存总和的最⼤值。

2. cluster-port⽤户可以⾃定义集群的绑定端⼝。

3. 对于Config Set 和Get命令,⽀持在⼀次调⽤过程中传递多个配置参数。例如,现在我们可以在执⾏⼀次Config Set命令中更改多个参数:config set maxmemory 10000001 maxmemory-clients 50% port 26381。

4. 还有shutdown-timeout,latency-tracking,cluster-link-sendbuf-limit等相关配置选项。

Redis 7.0 在以下⽅⾯有了明显的性能提升:

1. 数据类型Hash,List, Zset的底层数据结构⽤listpack替换了ziplist

2. 列表(List)的数据类型可以存储超过4GB的单个元素

3. 降低了copy-on-write期间的内存使⽤

4. 在使⽤⼤量散列(Hash)或者有序集合(Zset)时节省了⼤量的内存

5. 在集群模式下,节省了⼤量的内存并且降低了系统整体的延迟时间

6. 在集群中,当⼀个主节点重启之后,从节点不再需要做完全同步,只需要做部分同步即可

7. 当Redis启动时,总是建⽴⼀个AOF⽂件⽤于持久化

8. 降低了长期没有响应客户(idle, stale client)的内存使⽤

9. 降低了在客户回复数据包中的对于写的系统调⽤次数,也同时降低了TCP packet的数⽬

Radis 7.0 还对模块(Module)的API进⾏了部分修改如下:

1. 新增了对RESP3类型的应答的API⽀持

2. 新增了在RM_Call对RESP3回复消息的解析的API⽀持

3. 增加了对ACL进⾏验证的⽀持

4. 还增加API:RM_CreateSubcommand,RM_KeyExists,RM_TrimStringAllocation, RM_SetCommandInfo等

当然,Redis 7.0 前两个预览版中不⽌以上提到的内容,还有更多的新特性和新功能我们会在后续的博客中继续为⼤家介绍。

相关文档
最新文档