更多内容关注微信公众号:fullstack888

Redis 7.0 已经开发将近一年,开源社区之前发布了7.0的两个预览版。之后经历了三个候选版本。Redis的开发团队认为它已经足够稳定,可以用于生产环境。
7.0 版添加了近 50 个新命令和选项来支持这种演变并扩展 Redis 的现有功能。例如,位图、列表、集合、排序集合和流数据类型都添加了支持其数据管理用例的功能。此外,缓存语义已扩展为支持 existential 和 comparative modifiers。
公告指出,“虽然面向用户的功能很容易吹嘘,但这个版本中真正的 unsung heroes 其实是努力使 Redis 更高效、更稳定和更精简”。开发人员的大部分精力都投入到了通过关注 Redis 相对于它使用的资源的性能来提高 Redis 的操作效率。
Redis 7.0 对其管理的几乎每个子系统都进行了多项改进,包括内存、计算、网络和存储。虽然有些优化是默认启用的,但其他优化可能需要配置。
简而言之,Redis 7.0 几乎包括了对各个方面的增量改进。其中最值得注意的是 Redis Functions、ACLv2、command introspection 和 Sharded Pub/Sub,它们代表了基于用户反馈和生产经验教训的现有功能的重大演变。
Redis 7.0 新特征:
使用 Multi-Part AOF 机制避免 AOF 重写机制的开销;
对 RDB 文件使用了新版本格式(10),与旧版本不兼容;
在读取老的RDB文件格式的时候将ziplist转换为listpack,这种转换发生于两种情况之下:从磁盘读取文件或者从一个主节点进行复制文件的时候;
在redis.conf配置文件中,protected-mode 默认更改为yes,只有当你希望你的客户端在没有授权的情况下可以连接到Redis server的时候可以将protected-mode设置为no;
ACL: V2版本————细粒度基于 key 的权限控制,通过 selector 支持多种命令规则;
主从复制:TTL 总是被复制为绝对(非相对)毫秒时间
不再支持 gopher协议;
删除 STRALGO 命
当在配置文件中设置replica-serve-stale-data=no, 当主节点不再提供服务时,PING命令得不到返回值;
新的命令和新的命令参数:
ZMPOP、BZMPOP命令
LMPOP、BLMPOP 命令
SINTERCARD、ZINTERCARD 命令
SPUBLISH、SSUBSCRIBE、SUNSUBSCRIBE、PUBSUB、SHARDCHANNELS/SHARDNUMSUB 命令
EXPIRETIME、PEXPIRETIME 命令
EXPIRE 命令组支持 NX/XX/GT/LT 选项
SET 命令支持组合 NX 和 GET 标志
BITPOS, BITCOUNT 接受 BIT 索引
SORT_RO 命令在只读副本上运行
SHUTDOWN 支持参数 NOW、FORCE、ABORT
EVAL_RO,EVALSHA_RO 命令变体,在只读副本上运行
FUNCTION *,FCALL,FCALL_RO 命令,可以查看文档 https://redis.io/commands/function-load
CONFIG SET/GET 可以在一次调用中自动处理多个配置
QUIT 提升为真正的命令,HOST: 和 POST 从命令列表中降级
XADD 通过 -* 支持自动序列号
新的管理和自省命令和命令新增加的参数:
COMMAND DOCS
COMMAND LIST
COMMAND INFO 接受子命令作为参数,也可以没有参数
LATENCY HISTOGRAM
CLUSTER LINKS
CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE
CLIENT NO-EVICT
ACL DRYRUN
SLOWLOG GET 支持传入 -1 获取所有条目
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等;
- END -
往期回顾

技术交流,请加微信: jiagou6688 ,备注:Java,拉你进架构群
Redis 7.0 引入近50个新命令和选项,包括Redis Functions、ACLv2、command introspection和Sharded Pub/Sub等重大演变。新增Multi-Part AOF、新RDB格式、细粒度的ACL控制、TTL复制优化等。同时,性能得到提升,如数据结构优化、内存使用降低,并改进了模块API以支持RESP3和ACL验证。
852

被折叠的 条评论
为什么被折叠?



