转载:https://juejin.cn/post/7130626919124434951
近日,Redis 开源社区发布了7.0的两个预览版。在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令或已有命令的新加参数,一些性能上的优化和提高,还有一些API的改变,并且修复了以前版本中的一些bug,下面让我们具体来看一下这些方面的内容。
Redis 7.0 包括了以下一些重要的变化:
- 将AOF文件的存储方式改为在一个文件夹下存储多个文件。
- 将持久化文件RDB的版本升级为10,与之前的RDB文件版本不再兼容。
- 在读取老的RDB文件格式的时候将ziplist转换为listpack,这种转换发生于两种情况之下:从磁盘读取文件或者从一个主节点进行复制文件的时候。
- 在redis.conf配置文件中,protected-mode 默认更改为yes,只有当你希望你的客户端在没有授权的情况下可以连接到Redis server的时候可以将protected-mode设置为no。
- 在ACL中,pub/sub channel默认是被阻塞的。
- 在从节点中,TTL的时间标识的是绝对时间,不再是相对时间,从而保证了过期数据被及时删除。
- 不再支持 gopher协议。
- 当在配置文件中设置replica-serve-stale-data=no, 当主节点不再提供服务时,PING命令得不到返回值。
Redis 7.0 新特性:
- RedisFunctions:一种新的方式用于Redis server端脚本,它不同于以前版本支持的Lua脚本, Redis Functions可支持持久化,可复制,并且在节点重启之后可以直接从server端读取。
- 集群支持显示hostname,而不仅仅显示ip地址。
- 使用多个AOF文件降低了AOF重写期间的内存使用。
- 在Lua脚本中支持了Function的标志。
- 在AOF文件中增加了数据更新时间点的标识,使得用户可以恢复某一时间点的数据。
- Lua脚本支持RESP3 版本的并且可以通过redis.REDIS_VERSION, redis.REDIS_VERSION_NUM得到Redis的版本。
- 增加了对stream consumer组滞后的追踪和报告 。
- 增加了API以便于可以在functions和Lua脚本中明确地查看ACL。
Redis 7.0 新增14个用户端命令和 15个已有命令的相关参数选项,其中包括:ZMPOP, BZMPOP,LMPOP, BLMPOP等新命令,对于EXPIRE和SET命令,新增了更多的命令参数选项。
Redis 7.0 新增10个管理和监控相关的命令及其相关参数选项,其中包括:COMMAND LIST,COMMAND INFO,CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE等。
Redis 7.0 新增配置选项:
- maxmemory-clients 可以限定所有客户端使用的内存总和的最大值。
- cluster-port用户可以自定义集群的绑定端口。
- 对于Config Set 和Get命令,支持在一次调用过程中传递多个配置参数。例如,现在我们可以在执行一次Config Set命令中更改多个参数: config set maxmemory 10000001 maxmemory-clients 50% port 26381。
- 还有shutdown-timeout,latency-tracking,cluster-link-sendbuf-limit等相关配置选项。
Redis 7.0 在以下方面有了明显的性能提升:
- 数据类型Hash,List, Zset的底层数据结构用listpack替换了ziplist
- 列表(List)的数据类型可以存储超过4GB的单个元素
- 降低了copy-on-write期间的内存使用
- 在使用大量散列(Hash)或者有序集合(Zset)时节省了大量的内存
- 在集群模式下,节省了大量的内存并且降低了系统整体的延迟时间
- 在集群中,当一个主节点重启之后,从节点不再需要做完全同步,只需要做部分同步即可
- 当Redis启动时,总是建立一个AOF文件用于持久化
- 降低了长期没有响应客户(idle, stale client)的内存使用
- 降低了在客户回复数据包中的对于写的系统调用次数,也同时降低了TCP packet的数目
Radis 7.0 还对模块(Module)的API进行了部分修改如下:
- 新增了对RESP3类型的应答的API支持
- 新增了在RM_Call对RESP3回复消息的解析的API支持
- 增加了对ACL进行验证的支持
- 还增加API:RM_CreateSubcommand,RM_KeyExists,RM_TrimStringAllocation, RM_SetCommandInfo等
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




