Redis 7.0 新功能新特性总览

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

Redis 7.0 新功能新特性总览_第1张图片

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 -

往期回顾

◆Redis和Mysql如何保持数据一致性

◆漫画 | Kubernetes 如果是个水族馆

◆7 种提升 Spring Boot 吞吐量神技!

◆大型 SaaS 平台产品架构设计

◆代码规范&设计模式落地之路

◆深入理解分布式缓存设计

◆IT 运维监控场景中的故障预警及处理

◆再谈如何写好技术文档?

◆如何高效阅读源码?

◆面试题:为什么数据库连接池不采用 IO 多路复用?

Redis 7.0 新功能新特性总览_第2张图片

技术交流,请加微信: jiagou6688 ,备注:Java,拉你进架构群

你可能感兴趣的:(设计模式,redis,java,数据库,linux)