Redis 7.0 首个 RC 版本发布原创
2年前
316900
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)
来源:开源中国
原文链接:https://www.oschina.net/news/181934/redis-7-0-rc1-released
点赞收藏