Redis7。0首个RC版本发布
Redis 7.0 首个 RC 版已发布了一段时间。新版本包含多个面向用户的新功能、显着的性能优化和许多其他改进。与此同时还引入了可能会破坏兼容性的变更,因此使用者在升级时需要确认是否受影响。
需要特别注意以下变更:Redis 7 将 AOF 作为多个文件存储在一个文件夹中 Redis 7 为 RDB 文件应用了新版本 (version 10) 格式,与旧版本不兼容 Redis 7 在加载较旧的 RDB 格式时会动态地将 ziplist 编码的 key 转换为 listpacks。此过程通常发生在从 RDB 加载文件或者主从复制之间,且会增加加载时间
新特性 Redis Functions :使用服务器脚本扩展 Redis 的新方法 (#8693 )
see https://redis.io/topics/functions-intro ACL :细粒度的基于 key 的权限控制,通过 selectors 支持多种权限规则 (#9974 )
see https://redis.io/topics/acl#key-permissions and https://redis.io/topics/acl#selectors Cluster :支持用于分片(特定节点)的发布/订阅功能 (#8621 )
see https://redis.io/topics/pubsub#sharded-pubsub 在大多数情况下对子命令提供一流处理,这可能会对 ACL 类别、INFO 命令统计等造成影响 (#9504 , #10147 ) 命令元数据和文档更新 (#10104 )
查看 https://redis.io/commands/command-docs , https://redis.io/topics/command-tips Command key-specs :为 client 定位 key 参数和 read/write purpose 提供更好的方法
(#8324 , #10122 , #10167 )
see https://redis.io/topics/key-specs 使用 Multi-Part AOF 机制避免 AOF 的重写开销 (#9788 ) Cluster :支持主机名,不再是此前的仅支持 IP 地址 (#9530 ) 优化网络缓冲区的内存开销管理,以及增加当总内存超过限制时删除客户端的选项 (#8687 ) Cluster :增加断开集群总线连接的机制,以防止缓冲区不受控制的增长 (#9774 ) AOF :增加时间戳注解和对基于时间点恢复的支持 (#9326 ) Lua :支持 EVAL 脚本中的 Function flags (#10126 )
see https://redis.io/topics/eval-intro#eval-flags Lua :RESP3 协议响应 Verbatim 和 Big-Number 类型 (#9202 ) Lua :可通过 redis.REDIS_VERSION, redis.REDIS_VERSION_NUM 命令获取 Redis 版本 (#10066 )
性能和资源利用改进 集群模式下显著优化延迟并降低内存开销 (#9356 ) 在具有很多 zset 或 hash key 的场景时降低内存开销 (#9228 ) 复制积压缓冲区和主从复制缓冲区使用一个全局共享的缓冲区 (#9166 ) 减少 copy-on-write 的内存开销 (#8974 ) 释放集群发送缓冲区中未使用的容量 (#9255 ) 优化内存效率,充分利用客户端结构内存用于回复缓冲区 (#8968 ) 在 Hash, List, Zset 中将 ziplist 替换为 listpack (#8887 , #9366 , #9740 ) 添加对 list 类型的支持以存储大于 4GB 的元素 (#9357 ) 为临时客户端对象添加了一个池,以便在模块操作中重复使用 (#9940 ) 移除命令参数计数限制,动态增长 argv 缓冲区 (#9528 ) 优化 list 操作,从更靠近元素的一侧开始查找 (#9454 ) 改进 fsync 以避免大量写入磁盘 (#9409 ) BITSET 和 BITFIELD SET 仅在值实际更改时传播 (#9403 ) 降低客户端被模块解锁阻塞时的延时 (#9593 )