一、前言
本文使用谷歌翻译工具翻译Redis官方的7.0.x版本的发行说明,在此之前,笔者也翻译了6.2.x版本的发行说明——《Redis-6.2.x版本官方发行说明(附谷歌翻译)【持续更新】》。翻译工具翻译出来的不一定百分百准确,英语好的人别喷,大家都是英语差的人,希望各位能理解和包容。当然,笔者对某些翻译拗口的词组和语句,会做适当的润色。
笔者的翻译工具使用的是“划词翻译”,官方网址:https://hcfy.app/,优点是支持谷歌翻译和其它翻译,例如DeepL、百度、有道等等,并且支持网页全文翻译,中英文同时显示。缺点是需要收费,但不贵,45 RMB一年,5 RMB一个月,使用WX付费,只需使用邮箱注册账户即可。谷歌浏览器和火狐浏览器都可安装“划词翻译”插件,Safari、Microsoft Edge 和 IE 没试过。注意
:谷歌翻译已退出中国市场,要使用谷歌翻译功能,需要使用那种方法。
与 Redis 相关的安装部署博客如下:
Docker安装最新Redis6(redis-6.2.7)(参考官方文档)
Docker安装最新稳定版Redis7(redis-7.0.5)(参考官方文档)
写最好的最新Redis6(redis-6.2.7)在云服务器Centos7安装部署教程(参考官方文档)
写最好的最新稳定版Redis7(redis-7.0.5)在云服务器Centos7安装部署教程(参考官方文档)
本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!
二、谷歌翻译Redis-7.0.x版本官方发行说明
【Redis-7.0.x发行说明 - 官方文档】:
https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES
Redis 7.0 release notes(Redis 7.0 发行说明)
Upgrade urgency levels(升级紧急级别):
LOW: No need to upgrade unless there are new features you want to use.
LOW(低)
:除非有你想使用的新功能,否则不需要升级。
MODERATE: Program an upgrade of the server, but it’s not urgent.
MODERATE(中等)
:编程升级服务器,但并不紧急。
HIGH: There is a critical bug that may affect a subset of users. Upgrade!
HIGH(高)
:存在可能影响部分用户的严重错误。升级!
CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
CRITICAL(严重)
:存在影响大多数用户的严重错误。尽快升级。
SECURITY: There are security fixes in the release.
SECURITY(安全性)
:发行版中有安全修复程序。
Redis 7.0.14 Released Wed 18 Oct 2023 10:33:40 IDT(Redis 7.0.14 于 2023 年 10 月 18 日 星期三 10:33:40 IDT 发布)
Upgrade urgency SECURITY: See security fixes below.
升级紧迫性 安全性
:请参阅下面的安全修复程序。
Security Fixes(安全修复)
- (CVE-2023-45145) The wrong order of listen(2) and chmod(2) calls creates a race condition that can be used by another process to bypass desired Unix socket permissions on startup.
(CVE-2023-45145) Listen(2) 和 chmod(2) 调用的错误顺序会创建另一个进程可以使用竞争条件来绕过所需的 Unix 启动时的套接字权限。
Redis 7.0.13 Released Wed 06 Sep 2023 15:00:00 IDT(Redis 7.0.13 于 2023 年 9 月 6 日 星期一 15:00:00 IDT 发布)
Upgrade urgency SECURITY: See security fixes below.
升级紧迫性 安全性
:请参阅下面的安全修复程序。
Security Fixes(安全修复)
- (CVE-2023-41053) Redis does not correctly identify keys accessed by SORT_RO and as a result may grant users executing this command access to keys that are not explicitly authorized by the ACL configuration.
(CVE-2023-41053) Redis 无法正确识别 SORT_RO 访问的密钥,因此可能会授予执行此命令的用户访问 ACL 配置未明确授权的密钥的权限。
Bug Fixes(错误修复)
- Cluster: fix a race condition where a slot migration may revert on a subsequent failover or node joining (#12344)
集群:修复槽迁移可能会在后续故障转移或节点加入时恢复的竞争条件 (#12344)
- Ensure that the function load timeout is disabled during loading from RDB/AOF and on replicas. (#12451)
确保在从 RDB/AOF 加载期间以及在副本上禁用函数加载超时 (#12344)
- Fix the assertion when script timeout occurs after it signaled a blocked client (#12459)
修复在向客户端发出阻止信号后发生脚本超时时的断言 (#12459)
Redis 7.0.12 Released Mon July 10 12:00:00 IDT 2023(Redis 7.0.12 于 2023 年 7 月 10 日 星期一 12:00:00 IDT 发布)
Upgrade urgency SECURITY: See security fixes below.
升级紧迫性 安全性
:请参阅下面的安全修复程序。
Security Fixes(安全修复)
- (CVE-2022-24834) A specially crafted Lua script executing in Redis can trigger a heap overflow in the cjson and cmsgpack libraries, and result in heap corruption and potentially remote code execution. The problem exists in all versions of Redis with Lua scripting support, starting from 2.6, and affects only authenticated and authorized users.
(CVE-2022-24834) 在 Redis 中执行的特制 Lua 脚本可以触发 cjson 和 cmsgpack 库中的堆溢出,并导致堆损坏和潜在的远程代码执行。从 2.6 开始,所有支持 Lua 脚本的 Redis 版本都存在该问题,并且仅影响经过身份验证和授权的用户。
- (CVE-2023-36824) Extracting key names from a command and a list of arguments may, in some cases, trigger a heap overflow and result in reading random heap memory, heap corruption and potentially remote code execution. Specifically: using COMMAND GETKEYS* and validation of key names in ACL rules.
(CVE-2023-36824) 在某些情况下,从命令和参数列表中提取键名可能会触发堆溢出,并导致读取随机堆内存、堆损坏和潜在的远程代码执行。 具体来说:使用 COMMAND GETKEYS* 并验证 ACL 规则中的键名称。
Bug Fixes(错误修复)
- Re-enable downscale rehashing while there is a fork child (#12276)
当存在 fork child 时重新启用小规模重新哈希 (#12276)
- Fix possible hang in HRANDFIELD, SRANDMEMBER, ZRANDMEMBER when used with <count> (#12276)
修复与 <count> 一起使用时 HRANDFIELD、SRANDMEMBER、ZRANDMEMBER 中可能出现的挂起问题 (#12276)
- Improve fairness issue in RANDOMKEY, HRANDFIELD, SRANDMEMBER, ZRANDMEMBER, SPOP, and eviction (#12276)
改善 RANDOMKEY、HRANDFIELD、SRANDMEMBER、ZRANDMEMBER、SPOP 和 eviction 的公平性问题 (#12276)
- Fix WAIT to be effective after a blocked module command being unblocked (#12220)
修复 WAIT 在被阻止的模块命令被解除阻止后生效 (#12220)
- Avoid unnecessary full sync after master restart in a rare case (#12088)
在极少数情况下,避免主服务器重新启动后不必要的完全同步 (#12088)
Redis 7.0.11 Released Mon Apr 17 16:00:00 IST 2023(Redis 7.0.11 于 2023 年 4 月 17 日 星期一 16:00:00 IST 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复)
- (CVE-2023-28856) Authenticated users can use the HINCRBYFLOAT command to create an invalid hash field that will crash Redis on access
(CVE-2023-28856) 经过身份验证的用户可以使用 HINCRBYFLOAT 命令创建一个无效的哈希字段,这将使 Redis 在访问时崩溃
Bug Fixes(错误修复)
- Add a missing fsync of AOF file in rare cases (#11973)
在极少数情况下添加缺少的 AOF 文件 fsync (#11973)
- Disconnect pub-sub subscribers when revoking allchannels permission (#11992)
撤销所有频道权限时断开 pub-sub 订阅者 (#11992)
Platform / toolchain support related improvements(平台/工具链支持相关改进)
- Fix a compiler fortification induced crash when used with link time optimizations (#11982)
修复与链接时间优化一起使用时编译器强化引起的崩溃 (#11982)
Redis 7.0.10 Released Mon Mar 20 16:00:00 IST 2023(Redis 7.0.10 于 2023 年 3 月 20 日 星期一 16:00:00 IST 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复)
- (CVE-2023-28425) Specially crafted MSETNX command can lead to assertion and denial-of-service
(CVE-2023-28425) 特制的 MSETNX 命令可能导致断言和拒绝服务
Bug Fixes(错误修复)
- Large blocks of replica client output buffer may lead to psync loops and unnecessary memory usage (#11666)
大块的副本客户端输出缓冲区可能会导致 psync 循环和不必要的内存使用(#11666)
- Fix CLIENT REPLY OFF|SKIP to not silence push notifications (#11875)
修复 CLIENT REPLY OFF|SKIP 以不静音推送通知 (#11875)
- Trim excessive memory usage in stream nodes when exceeding ‘stream-node-max-bytes’ (#11885)
超过 'stream-node-max-bytes' 时修剪流节点中过多的内存使用(#11885)
- Fix module RM_Call commands failing with OOM when maxmemory is changed to zero (#11319)
修复模块 RM_Call 命令在 maxmemory 更改为零时因 OOM 而失败 (#11319)
Redis 7.0.9 Released Tue Feb 28 12:00:00 IST 2023(Redis 7.0.9 于 2023 年 2 月 28 日 星期二 12:00:00 IST 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复)
- (CVE-2023-25155) Specially crafted SRANDMEMBER, ZRANDMEMBER, and HRANDFIELD commands can trigger an integer overflow, resulting in a runtime assertion and termination of the Redis server process.
(CVE-2023-25155) 特制的 SRANDMEMBER、ZRANDMEMBER 和 HRANDFIELD 命令可以触发整数溢出,导致运行时断言和 Redis 服务器进程终止。
- (CVE-2022-36021) String matching commands (like SCAN or KEYS) with a specially crafted pattern to trigger a denial-of-service attack on Redis, causing it to hang and consume 100% CPU time.
(CVE-2022-36021) 具有特制模式的字符串匹配命令(如 SCAN 或 KEYS)会触发对 Redis 的拒绝服务攻击,导致其挂起并消耗 100% 的 CPU 时间。
Bug Fixes(错误修复)
- Fix a crash when reaching the maximum invalidations limit of client-side tracking (#11814)
修复客户端跟踪达到最大失效限制时的崩溃 (#11814)
- Fix a crash when SPUBLISH is used after passing the cluster-link-sendbuf-limit (#11752)
修复在通过 cluster-link-sendbuf-limit 后使用 SPUBLISH 时的崩溃 (#11752)
- Fix possible memory corruption in FLUSHALL when a client watches more than one key (#11854)
修复客户端监视多个key时 FLUSHALL 中可能的内存损坏 (#11854)
- Fix cluster inbound link keepalive time (#11785)
修复集群入站链接保持活动时间 (#11785)
- Flush propagation list in active-expire of writable replicas to fix an assertion (#11615)
在可写副本的 active-expire 中刷新传播列表以修复断言 (#11615)
- Avoid propagating DEL of lazy expire from SCAN and RANDOMKEY as MULTI-EXEC (#11788)
避免将 SCAN 和 RANDOMKEY 中的延迟过期 DEL 传播为 MULTI-EXEC(#11788)
Performance and resource utilization improvements(性能和资源利用率改进)
- Avoid realloc to reduce size of strings when it is unneeded (#11766)
避免在不需要时重新分配以减小字符串的大小 (#11766)
- Improve CLUSTER SLOTS reply efficiency for non-continuous slots (#11745)
提高非连续槽的 CLUSTER SLOTS 回复效率 (#11745)
Redis 7.0.8 Released Mon Jan 16 12:00:00 IDT 2023(Redis 7.0.8 于 2023 年 1 月 16 日 星期一 12:00:00 IDT 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复)
- (CVE-2022-35977) Integer overflow in the Redis SETRANGE and SORT/SORT_RO commands can drive Redis to OOM panic
(CVE-2022-35977) Redis SETRANGE 和 SORT/SORT_RO 命令中的整数溢出可能导致 Redis 出现 OOM 恐慌
- (CVE-2023-22458) Integer overflow in the Redis HRANDFIELD and ZRANDMEMBER commands can lead to denial-of-service
(CVE-2023-22458) Redis HRANDFIELD 和 ZRANDMEMBER 命令中的整数溢出可能导致拒绝-停止服务
Bug Fixes(错误修复)
- Avoid possible hang when client issues long KEYS, SRANDMEMBER, HRANDFIELD, and ZRANDMEMBER commands and gets disconnected by client output buffer limit (#11676)
避免当客户端发出长 KEYS、SRANDMEMBER、HRANDFIELD 和 ZRANDMEMBER 命令并因客户端输出缓冲区限制而断开连接时可能挂起 (#11676)
- Make sure that fork child doesn’t do incremental rehashing (#11692)
确保 fork 子进程不进行增量重新散列 (#11692)
- Fix a bug where blocking commands with a sub-second timeout would block forever (#11688)
修复一个错误,其中具有亚秒级超时的阻塞命令将永远阻塞 (#11688)
- Fix sentinel issue if replica changes IP (#11590)
修复副本更改 IP 时的哨兵问题 (#11590)
Redis 7.0.7 Released Fri Dec 16 12:00:00 IST 2022(Redis 7.0.7 于 2022 年 12 月 16 日 星期五 12:00:00 IST 发布)
Upgrade urgency: MODERATE, Contains fix for a regression in Geo commands.
升级紧迫性
:中等,包含对地理命令回归的修复。
Bug Fixes(错误修复)
- Fix regression from Redis 7.0.6 in distance replies of Geo commands (#11631)
修复 Redis 7.0.6 在 Geo(地理)命令的距离回复中的回归 (#11631)
Redis 7.0.6 Released Mon Dec 12 12:00:00 IST 2022(Redis 7.0.6 于 2022 年 12 月 12 日 星期一 12:00:00 IST 发布)
Upgrade urgency: MODERATE, Contains fixes for a few non-critical or unlikely bugs, and some dramatic optimizations to Geo, EVAL, and Sorted sets commands.
升级紧迫性
:中等,包含对一些非关键或不太可能的错误的修复,以及对 Geo、EVAL 和 Sorted sets 命令的一些显着优化。
Potentially Breaking Bug Fixes for new Redis 7.0 features(新 Redis 7.0 功能的潜在漏洞修复)
- RM_ResetDataset module API should not clear the functions (#11268)
RM_ResetDataset 模块 API 不应清除函数 (#11268)
- RM_Call module API used with the “C” flag to run scripts, would now cause the commands in the script to check ACL with the designated user (#10966)
RM_Call 模块 API 与“C”标志一起用于运行脚本,现在会导致脚本中的命令检查指定用户的 ACL (#10966)
Performance and resource utilization improvements(性能和资源利用率改进)
- Geo commands speedups (#11535, #11522, #11552, #11579)
地理命令加速(#11535、#11522、#11552、#11579)
- Fix EVAL command performance regression from Redis 7.0 (#11521, #11541)
修复 Redis 7.0 中的 EVAL 命令性能回归(#11521、#11541)
- Reduce EXPIRE commands performance regression from Redis 7.0 (#11602)
减少 Redis 7.0 中的 EXPIRE 命令性能回归(#11602)
- Optimize commands returning double values, mainly affecting zset commands (#11093)
优化命令返回double 值,主要影响 zset 命令 (#11093)
- Optimize Lua parsing of some command responses (#11556)
优化一些命令响应的 Lua 解析 (#11556)
- Optimize client memory usage tracking operation while client eviction is disabled (#11348)
在禁用客户端驱逐时优化客户端内存使用跟踪操作 (#11348)
Platform / toolchain support related improvements(平台/工具链支持相关改进)
- Fix compilation on Solaris (#11327)
修复 Solaris 上的编译问题 (#11327)
Module API changes(模块 API 更改)
- RM_SetContextUser, RM_SetModuleUserACLString, RM_GetModuleUserACLString (#10966)
RM_SetContextUser、RM_SetModuleUserACLString、RM_GetModuleUserACLString (#10966)
- Fix crash in CLIENT_CHANGE event, when the selected database is not 0 (#11500)
修复当所选数据库不为 0 时 CLIENT_CHANGE 事件中的崩溃 (#11500)
Changes in CLI tools(CLI 工具的变化)
- redis-benchmark avoid aborting on NOPERM from CONFIG GET (#11096)
redis-benchmark 避免在 NOPERM 上从 CONFIG GET 中止(#11096)
Bug Fixes(错误修复)
- Avoid hang of diskless replication fork child when parent crashes (#11463)
避免在父级崩溃时挂起无盘复制 fork 子进程(#11463)
- Fix crash with module API of list iterator and RM_ListDelete (#11383)
修复列表迭代器模块 API 和 RM_ListDelete 的崩溃 (#11383)
- Fix TLS error handling to avoid connection drops on timeouts (#11563)
修复 TLS 错误处理以避免超时连接丢失 (#11563)
- Fix runtime changes to cluster-announce-*-port to take effect on the local node too (#10745)
修复运行时更改为cluster-announce-*-port 也在本地节点上生效(#10745)
- Fix sentinel function that compares hostnames if failed resolve (#11419)
修复在解析失败时比较主机名的哨兵函数(#11419)
- Fix MIGRATE with AUTH set to “keys” is getting wrong key names leading to MOVED or ACL errors (#11253)
修复 AUTH 设置为“keys”的 MIGRATE 获取错误的键名导致 MOVED 或 ACL 错误 (#11253)
Fixes for issues in previous releases of Redis 7.0(Redis 7.0 之前版本中问题的修复)
- Fix command line startup --sentinel problem (#11591)
修复命令行启动 --sentinel 问题 (#11591)
- Fis missing FCALL commands in monitor (#11510)
Fis 在监视器中缺少 FCALL 命令 (#11510)
- Fix CLUSTER SHARDS showing empty hostname (#11297)
修复 CLUSTER SHARDS 显示空主机名 (#11297)
- Replica that asks for rdb-only could have missed the EOF and hang (#11296)
请求 rdb-only 的副本可能错过了 EOF 并挂起(#11296)
Redis 7.0.5 Released Wed Sep 21 20:00:00 IST 2022(Redis 7.0.5 于 2022 年 9 月 21 日 星期三 20:00:00 IST 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复):
- (CVE-2022-35951) Executing a XAUTOCLAIM command on a stream key in a specific state, with a specially crafted COUNT argument, may cause an integer overflow, a subsequent heap overflow, and potentially lead to remote code execution. The problem affects Redis versions 7.0.0 or newer [reported by Xion (SeungHyun Lee) of KAIST GoN].
(CVE-2022-35951) 在特定状态的流键上执行 XAUTOCLAIM 命令,使用特制的 COUNT 参数,可能会导致整数溢出、后续堆溢出,并可能导致远程代码执行。该问题影响 Redis 版本 7.0.0 或更高版本 [由 KAIST GoN 的 Xion (SeungHyun Lee) 报告]。
Module API changes(模块 API 更改)
- Fix RM_Call execution of scripts when used with M/W/S flags to properly handle script flags (#11159)
修复与 M/W/S 标志一起使用时脚本的 RM_Call 执行,以正确处理脚本标志(#11159)
- Fix RM_SetAbsExpire and RM_GetAbsExpire API registration (#11025, #8564)
修复 RM_SetAbsExpire 和 RM_GetAbsExpire API 注册(#11025、#8564)
Bug Fixes(错误修复)
- Fix a hang when eviction is combined with lazy-free and maxmemory-eviction-tenacity is set to 100 (#11237)
修复当驱逐策略(eviction)是以 lazy-free 和 maxmemory-eviction-tenacity 设置为 100 的组合导致的挂起 (#11237)
- Fix a crash when a replica may attempt to set itself as its master as a result of a manual failover (#11263)
修复了副本可能由于手动故障转移而尝试将自己设置为其主服务器时的崩溃 (#11263)
- Fix a bug where a cluster-enabled replica node may permanently set its master’s hostname to ‘?’ (#10696)
修复了启用集群的副本节点可能将其主节点的主机名永久设置为“?”的错误 (#10696)
- Fix a crash when a Lua script returns a meta-table (#11032)
修复 Lua 脚本返回元表时的崩溃 (#11032)
Fixes for issues in previous releases of Redis 7.0(Redis 7.0 之前版本中问题的修复)
- Fix redis-cli to do DNS lookup before sending CLUSTER MEET (#11151)
修复 redis-cli 在发送 CLUSTER MEET 之前进行 DNS 查找(#11151)
- Fix crash when a key is lazy expired during cluster key migration (#11176)
修复集群密钥迁移期间密钥延迟过期时的崩溃(#11176)
- Fix AOF rewrite to fsync the old AOF file when a new one is created (#11004)
修复当创建新 AOF 文件时,AOF 以 fsync 方式重写旧的 AOF 文件 (#11004)
- Fix some crashes involving a list containing entries larger than 1GB (#11242)
修复一些涉及包含大于 1GB 条目的列表的崩溃 (#11242)
- Correctly handle scripts with a non-read-only shebang on a cluster replica (#11223)
正确处理集群副本上带有非只读 shebang 的脚本 (#11223)
- Fix memory leak when unloading a module (#11147)
修复卸载模块时的内存泄漏 (#11147)
- Fix bug with scripts ignoring client tracking NOLOOP (#11052)
修复忽略客户端跟踪 NOLOOP 的脚本错误 (#11052)
- Fix client-side tracking breaking protocol when FLUSHDB / FLUSHALL / SWAPDB is used inside MULTI-EXEC (#11038)
修复在 MULTI-EXEC 中使用 FLUSHDB / FLUSHALL / SWAPDB 时客户端(client-side)跟踪中断协议 (#11038)
- Fix ACL: BITFIELD with GET and also SET / INCRBY can be executed with read-only key permission (#11086)
修复 ACL:BITFIELD 与 GET 和 SET / INCRBY 可以在只读密钥权限下执行 (#11086)
- Fix missing sections for INFO ALL when also requesting a module info section (#11291)
在请求模块信息部分时修复 INFO ALL 的缺失部分 (#11291)
Redis 7.0.4 Released Monday Jul 18 12:00:00 IST 2022(Redis 7.0.4 于 2022 年 7 月 18 日 星期一 12:00:00 IST 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复):
- (CVE-2022-31144) A specially crafted XAUTOCLAIM command on a stream key in a specific state may result with heap overflow, and potentially remote code execution. The problem affects Redis versions 7.0.0 or newer.
(CVE-2022-31144) 对处于特定状态的流键执行特制的 XAUTOCLAIM 命令可能会导致堆溢出,并可能导致远程代码执行。该问题影响 Redis 版本 7.0.0 或更高版本。
Redis 7.0.3 Released Monday Jul 11 12:00:00 IST 2022(Redis 7.0.3 于 2022 年 7 月 11 日 星期一 12:00:00 IST 发布)
Upgrade urgency: MODERATE, specifically if you’re using a previous release of Redis 7.0, contains fixes for bugs in previous 7.0 releases.
升级紧迫性
:中等,特别是如果您使用的是以前版本的 Redis 7.0,包含对以前 7.0 版本中错误的修复。
Performance and resource utilization improvements(性能和资源利用率改进)
- Optimize zset conversion on large ZRANGESTORE (#10789)
优化大型 ZRANGESTORE 上的 zset 转换 (#10789)
- Optimize the performance of sending PING on large clusters (#10624)
优化在大型集群上发送 PING 的性能 (#10624)
- Allow for faster restart of Redis in cluster mode (#10912)
允许在集群模式下更快地重启 Redis (#10912)
INFO fields and introspection changes(INFO 字段和内省变化)
- Add missing sharded pubsub keychannel count to CLIENT LIST (#10895)
将缺失的分片 pubsub keychannel 计数添加到客户端列表 (#10895)
- Add missing pubsubshard_channels field in INFO STATS (#10929)
在 INFO STATS 中添加缺失的 pubsubshard_channels 字段 (#10929)
Module API changes(模块 API 更改)
- Add RM_StringToULongLong and RM_CreateStringFromULongLong (#10889)
添加 RM_StringToULongLong 和 RM_CreateStringFromULongLong (#10889)
- Add RM_SetClientNameById and RM_GetClientNameById (#10839)
添加 RM_SetClientNameById 和 RM_GetClientNameById (#10839)
Changes in CLI tools(CLI 工具的变化)
- Add missing cluster-port support to redis-cli --cluster (#10344)
将缺少的集群端口支持添加到 redis-cli --cluster (#10344)
Other General Improvements(其他一般改进)
- Account sharded pubsub channels memory consumption (#10925)
帐户分片 pubsub 通道内存消耗(#10925)
- Allow ECHO in loading and stale modes (#10853)
在加载和陈旧模式下允许 ECHO(#10853)
- Cluster: Throw -TRYAGAIN instead of -ASK on migrating nodes for multi-key commands when the node only has some of the keys (#9526)
Cluster(集群):当节点只有一些键时,在迁移节点上为多键命令抛出 -TRYAGAIN 而不是 -ASK (#9526)
Bug Fixes(错误修复)
- TLS: Notify clients on connection shutdown (#10931)
TLS:在连接关闭时通知客户端 (#10931)
- Fsync directory while persisting AOF manifest, RDB file, and config file (#10737)
在保留 AOF 清单、RDB 文件和配置文件时 Fsync 目录 (#10737)
- Script that made modification will not break with unexpected NOREPLICAS error (#10855)
进行修改的脚本不会因意外的 NOREPLICAS 错误而中断 (#10855)
- Cluster: Fix a bug where nodes may not acknowledge a CLUSTER FAILOVER TAKEOVER after a replica reboots (#10798)
Cluster(集群):修复副本重启后节点可能无法确认 CLUSTER FAILOVER TAKEOVER 的错误 (#10798)
- Cluster: Fix crash during handshake and cluster shards call (#10942)
Cluster(集群):修复握手和集群分片调用期间的崩溃 (#10942)
Fixes for issues in previous releases of Redis 7.0(Redis 7.0 之前版本中问题的修复)
- TLS: Fix issues with large replies (#10909)
TLS:修复大量回复的问题 (#10909)
- Correctly report the startup warning for vm.overcommit_memory (#10841)
正确报告 vm.overcommit_memory 的启动警告 (#10841)
- redis-server command line allow passing config name and value in the same argument (#10866)
redis-server 命令行允许在同一参数中传递配置名称和值 (#10866)
- Support --save command line argument with no value for backwards compatibility (#10866)
支持不带值的 --save 命令行参数以实现向后兼容性 (#10866)
- Fix CLUSTER RESET command regression requiring an argument (#10898)
修复需要参数的 CLUSTER RESET 命令回归 (#10898)
Redis 7.0.2 Released Sunday Jun 12 12:00:00 IST 2022(Redis 7.0.2 于 2022 年 6 月 12 日 星期日 12:00:00 IST 发布)
Upgrade urgency: MODERATE, specifically if you’re using a previous release of Redis 7.0, contains fixes for bugs in previous 7.0 releases.
升级紧迫性
:中等,特别是如果您使用的是以前版本的 Redis 7.0,包含对以前 7.0 版本中错误的修复。
Bug Fixes(错误修复)
- Fixed SET and BITFIELD commands being wrongly marked movablekeys (#10837)
修复了 SET 和 BITFIELD 命令被错误标记为 movablekeys (#10837)
Regression in 7.0 possibly resulting in excessive roundtrip from cluster clients.
7.0 中的回归可能导致来自集群客户端的过多往返。
- Fix crash when /proc/sys/vm/overcommit_memory is inaccessible (#10848)
修复 /proc/sys/vm/overcommit_memory 不可访问时的崩溃 (#10848)
Regression in 7.0.1 resulting in crash on startup on some configurations.
7.0.1 中的回归导致某些配置启动时崩溃。
Redis 7.0.1 Released Wed Jun 8 12:00:00 IST 2022(Redis 7.0.1 于 2022 年 IST 6 月 8 日 星期三 12:00:00 IST 发布)
Upgrade urgency: MODERATE, specifically if you’re using a previous release of Redis 7.0, contains some behavior changes for new 7.0 features and important fixes for bugs in previous 7.0 releases.
升级紧迫性
:中等,特别是如果您使用的是以前版本的 Redis 7.0,包含针对新 7.0 功能的一些行为更改和针对以前 7.0 版本中错误的重要修复。
Improvements(改进)
- Add warning for suspected slow system clocksource setting
为可疑的慢速系统时钟源设置添加警告
Add --check-system command line option. (#10636)
添加 --check-system 命令行选项。 (#10636)
- Allow read-only scripts (*_RO commands, and ones with
no-writes
flag) during CLIENT PAUSE WRITE (#10744)在 CLIENT PAUSE WRITE 期间允许只读脚本(*_RO 命令,以及带有
no-writes标志的命令)(#10744)
- Add
readonly
flag in COMMAND command for EVAL_RO, EVALSHA_RO and FCALL_RO (#10728)在 COMMAND 命令中为 EVAL_RO、EVALSHA_RO 和 FCALL_RO 添加
readonly标志(#10728)
- redis-server command line arguments now accept one string with spaces for multi-arg configs (#10660)
redis-server 命令行参数现在接受一个带有空格的字符串用于多参数配置 (#10660)
Potentially Breaking Changes(潜在的重大变化)
- Omitting a config option value in command line argument no longer works (#10660)
在命令行参数中省略配置选项值不再有效 (#10660)
- Hide the
may_replicate
flag from the COMMAND command response (#10744)从 COMMAND 命令响应中隐藏
may_replicate标志 (#10744)
Potentially Breaking Changes for new Redis 7.0 features(Redis 7.0 新功能的潜在重大变化)
- Protocol: Sharded pubsub publish emits
smessage
instead ofmessage
(#10792)协议:分片 pubsub 发布发出 “smessage” 而不是 “message” (#10792)
- CLUSTER SHARDS returns slots as RESP integers, not strings (#10683)
CLUSTER SHARDS 返回槽作为 RESP 整数,而不是字符串 (#10683)
- Block PFCOUNT and PUBLISH in read-only scripts (*_RO commands, and no-writes) (#10744)
在只读脚本中阻止 PFCOUNT 和 PUBLISH(*_RO 命令,和no-writes) (#10744)
- Scripts that declare the
no-writes
flag are implicitlyallow-oom
too (#10699)声明 “no-writes” 标志的脚本也是隐含的 “allow-oom” (#10699)
Changes in CLI tools(CLI 工具的变化)
- redis-cli --bigkeys, --memkeys, --hotkeys, --scan. Finish nicely after Ctrl+C (#10736)
redis-cli --bigkeys、--memkeys、--hotkeys、--scan。 Ctrl+C 后很好地完成 (#10736)
Platform / toolchain support related improvements(平台/工具链支持相关改进)
- Support tcp-keepalive config interval on MacOs (#10667)
在 MacO 上支持 tcp-keepalive 配置间隔 (#10667)
- Support RSS metrics on Haiku OS (#10687)
在 Haiku OS 上支持 RSS 指标 (#10687)
INFO fields and introspection changes(INFO 字段和内省变化)
- Add isolated network metrics for replication. (#10062, #10810)
添加用于复制的独立网络指标。 (#10062, #10810)
Module API changes(模块 API 更改)
- Add two more new checks to RM_Call script mode (#10786)
向 RM_Call 脚本模式添加两个新的检查 (#10786)
- Add new RM_Call flag to let Redis automatically refuse
deny-oom
commands (#10786)添加新的 RM_Call 标志,让 Redis 自动拒绝
deny-oom命令 (#10786)
- Add module API RM_MallocUsableSize (#10795)
添加模块 API RM_MallocUsableSize (#10795)
- Add missing REDISMODULE_NOTIFY_NEW (#10688)
添加缺少的 REDISMODULE_NOTIFY_NEW (#10688)
- Fix cursor type in RedisModuleScanCursor to handle more than 2^31 elements (#10698)
修复 RedisModuleScanCursor 中的游标类型以处理超过 2^31^ 个元素 (#10698)
- Fix RM_Yield bugs and RM_Call(“EVAL”) OOM check bug (#10786)
修复 RM_Yield 错误和 RM_Call("EVAL") OOM 检查错误 (#10786)
- Fix bugs in enum configs with overlapping bit flags (#10661)
修复带有重叠位标志的枚举配置中的错误 (#10661)
Bug Fixes(错误修复)
- FLUSHALL correctly resets rdb_changes_since_last_save INFO field (#10691)
FLUSHALL 正确重置 rdb_changes_since_last_save INFO 字段 (#10691)
- FLUSHDB is now propagated to replicas / AOF, even if the db is empty (#10691)
FLUSHDB 现在传播到副本/AOF,即使数据库为空 (#10691)
- Replica fail and retry the PSYNC if the master is unresponsive (#10726)
如果主服务器没有响应,副本失败并重试 PSYNC (#10726)
- Fix ZRANGESTORE crash when zset_max_listpack_entries is 0 (#10767)
修复 ZRANGESTORE当 zset_max_listpack_entries 为 0 时崩溃 (#10767)
Fixes for issues in previous releases of Redis 7.0(Redis 7.0 之前版本中问题的修复)
- CONFIG REWRITE could cause a config change to be dropped for aliased configs (#10811)
CONFIG REWRITE 可能导致别名配置的配置更改被删除 (#10811)
- CONFIG REWRITE would omit rename-command and include lines (#10761)
CONFIG REWRITE 将省略重命名命令并包含行 (#10761)
NOTE: Affected users who used Redis 7.0.0 to rewrite their configuration file should review and fix the file.
注意:使用 Redis 7.0.0 重写其配置文件的受影响用户应该查看并修复文件。
- Fix broken protocol after MISCONF (persistence) error (#10786)
修复 MISCONF(持久性)错误后损坏的协议 (#10786)
- Fix --save command line regression (#10690)
修复 --save 命令行回归 (#10690)
- Fix possible regression around TLS config changes. re-load files even if the file name didn’t change. (#10713)
修复围绕 TLS 配置更改的可能回归。即使文件名没有改变,也要重新加载文件。 (#10713)
- Re-add SENTINEL SLAVES command, missing in redis 7.0 (#10723)
重新添加 SENTINEL SLAVES 命令,redis 7.0 中缺失 (#10723)
- BZMPOP gets unblocked by non-key args and returns them (#10764)
BZMPOP 被非键参数解锁并返回它们 (#10764)
- Fix possible memory leak in XADD and XTRIM (#10753)
修复 XADD 和 XTRIM 中可能的内存泄漏 (#10753)
Redis 7.0.0 GA Released Wed Apr 27 12:00:00 IST 2022(Redis 7.0.0 GA 于 2022 年 IST 4 月 27 日 星期三 12:00:00 IST 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复):
- (CVE-2022-24736) An attacker attempting to load a specially crafted Lua script can cause NULL pointer dereference which will result with a crash of the redis-server process. This issue affects all versions of Redis. [reported by Aviv Yahav].
(CVE-2022-24736) 试图加载特制 Lua 脚本的攻击者可能导致 NULL 指针取消引用,这将导致 redis-server 进程崩溃。此问题会影响所有版本的 Redis。 [由 Aviv Yahav 报告]。
- (CVE-2022-24735) By exploiting weaknesses in the Lua script execution environment, an attacker with access to Redis can inject Lua code that will execute with the (potentially higher) privileges of another Redis user. [reported by Aviv Yahav].
(CVE-2022-24735) 通过利用 Lua 脚本执行环境中的弱点,有权访问 Redis 的攻击者可以注入 Lua 代码,该代码将以另一个 Redis 用户的(可能更高的)权限执行。 [由 Aviv Yahav 报告]。
New Features(新功能)
- Keyspace event for new keys (#10512)
新键的键空间事件 (#10512)
Command replies that have been extended(已扩展的命令回复)
- COMMAND DOCS shows deprecated_since field in command args (#10545)
COMMAND DOCS 在命令参数中显示 deprecated_since 字段 (#10545)
- COMMAND DOCS shows module name where applicable (#10544)
COMMAND DOCS 在适用的地方显示模块名称 (#10544)
Potentially Breaking Changes(潜在的重大变化)
- Replicas panic when they fail writing persistence (#10504)
副本写入持久性失败时会出现死机(恐慌)(#10504)
- Prevent cross slot operations in functions and scripts with shebang (#10615)
使用 shebang 防止函数和脚本中的跨槽操作(#10615)
- Rephrased some error responses about invalid commands or args (#10612)
重新表述一些关于无效命令或参数的错误响应(#10612)
- Lua scripts do not have access to the print() function (#10651)
Lua 脚本无法访问print() 函数 (#10651)
Performance and resource utilization improvements(性能和资源利用率改进)
- Speed optimization in streams (#10574)
流中的速度优化(#10574)
- Speed optimization in command execution pipeline (#10502)
命令执行管道中的速度优化(#10502)
- Speed optimization in listpack encoded sorted (#10486)
列表包编码排序中的速度优化(#10486)
- Speed optimization in latency tracking at INFO (relevant for 7.0 RCs) (#10606)
NFO 延迟跟踪中的速度优化(与 7.0 RC 相关)(#10606)
- Speed optimization when there are many replicas (relevant for 7.0 RCs) (#10588)
有很多副本时的速度优化(与 7.0 RC 相关)(#10588)
New configuration options(新的配置选项)
- Allow ignoring disk persistence errors on replicas (#10504)
允许忽略副本上的磁盘持久性错误(#10504)
- Allow abort with panic when replica fails to execute a command sent by the master (#10504)
当副本无法执行主服务器发送的命令时允许异常中止(#10504)
- Allow configuring shutdown flags of SIGTERM and SIGINT (#10594)
允许配置 SIGTERM 和 SIGINT 的关闭标志(#10594)
- Allow attaching an operating system-specific identifier to Redis sockets (#10349)
允许附加操作Redis 套接字的系统特定标识符 (#10349)
Module API changes(模块 API 更改)
- Add argument specifying ACL reason for module log entry (#10559)
添加指定模块日志条目的 ACL 原因的参数(#10559)
Breaking API compatibility with 7.0 RCs
破坏 API 与 7.0 RC 的兼容性
- Add the deprecated_since field in command args of COMMAND DOCS (#10545)
在 COMMAND DOCS 的命令参数中添加 deprecated_since 字段(#10545)
Breaking API/ABI compatibility with 7.0 RCs
破坏 API/ABI 与 7.0 RC 的兼容性
- Add module API flag for using enum configs as bit flags (#10643)
添加模块 API 标志以供使用枚举配置作为位标志 (#10643)
- Add RM_PublishMessageShard (#10543)
添加 RM_PublishMessageShard (#10543)
- Add RM_MallocSizeString, RM_MallocSizeDict (#10542)
添加 RM_MallocSizeString、RM_MallocSizeDict (#10542)
- Add RM_TryAlloc (#10541)
添加 RM_TryAlloc (#10541)
Bug Fixes(错误修复)
- Replica report disk persistence errors in PING (#10603)
副本报告 PING 中的磁盘持久性错误(#10603)
- Fixes around rejecting commands on replicas and AOF when they must be respected (#10603)
修复了在必须尊重副本和 AOF 时拒绝命令的问题(#10603)
- Durability fixes for appendfsync=always policy (#9678)
appendfsync=always 策略的持久性修复(#9678)
Fixes for issues in previous release candidates of Redis 7.0(Redis 7.0 先前版本候选中的问题修复)
- Fix possible crash on CONFIG REWRITE (#10598)
修复 CONFIG REWRITE 上可能发生的崩溃(#10598)
- Fix regression not aborting transaction on errors (#10612)
修复回归而不是在错误时中止事务(#10612)
- Fix auto-aof-rewrite-percentage based AOFRW trigger after restart (#10550)
修复重启后基于自动 aof-rewrite-percentage 的 AOFRW 触发器(#10550)
- Fix bugs when AOF enabled after startup, in case of failure before the first rewrite completes (#10616)
修复启动后启用 AOF 时的错误,如果在第一次重写完成之前失败 (#10616)
- Fix RM_Yield module API bug processing future commands of the current client (#10573)
修复 RM_Yield 模块 API 错误处理当前客户端的未来命令 (#10573)
Redis 7.0 RC3 Released Tue Apr 5 12:00:00 IST 2022(Redis 7.0 RC3 于 2022 年 IST 4 月 5 日 星期二 12:00:00 IST 发布)Upgrade urgency LOW: This is another Release Candidate of Redis 7.0.
升级紧迫性低
:这是 Redis 7.0 的另一个候选版本。
New Features(新功能)
New administrative and introspection commands and command arguments(新的管理和内省命令和命令参数)
- CLUSTER SHARDS command deprecates CLUSTER SLOTS (#10293)
CLUSTER SHARDS 命令弃用 CLUSTER SLOTS (#10293)
Potentially Breaking Changes(潜在的重大变化)
- CONFIG GET response returned in a non-deterministic order. It’s possible that a client was relying on configs order (#10323)
CONFIG GET 响应以非确定性顺序返回。客户端可能依赖配置顺序 (#10323)
- SORT / SORT_RO commands reject keys access patterns in GET and BY if ACL doesn’t grant the command full keyspace access (#10340)
SORT / SORT_RO 命令拒绝 GET 和 BY 中的键访问模式,如果 ACL 不授予命令完全键空间访问权限 (#10340)
- FUNCTION LOAD command introduced in 7.0-RC1 was stripped of the ENGINE, and NAME arguments which are now part of the script itself. The DESCRIPTION argument was completely removed (#10500)
7.0-RC1 中引入的 FUNCTION LOAD 命令被剥离了 ENGINE 和 NAME 参数,它们现在是脚本本身的一部分。 DESCRIPTION 参数已完全删除 (#10500)
- Set disable-thp config to be immutable (#10409)
将 disable-thp 配置设置为不可变 (#10409)
Performance and resource utilization improvements(性能和资源利用率改进)
- Optimize performance and memory usage on replicas (#10413)
优化副本的性能和内存使用 (#10413)
- A faster and more robust code of zslRandomLevel using RAND_MAX (#5539)
使用 RAND_MAX 的 zslRandomLevel 代码更快更健壮 (#5539)
Changes in CLI tools(CLI 工具的变化)
- redis-cli: Use exit code 1 on error (#10468)
redis-cli:在出现错误时使用退出代码 1 (#10468)
- redis-cli: Do DNS lookup before sending CLUSTER MEET (#10436)
redis-cli:在发送 CLUSTER MEET 之前执行 DNS 查找 (#10436)
- redis-benchmark: Fix --cluster with IPv6. (#10393)
redis-benchmark:使用 IPv6 修复 --cluster。 (#10393)
- redis-cli: Better --json Unicode support and --quoted-json (#10286)
redis-cli:更好的 --json Unicode 支持和 --quoted-json (#10286)
INFO fields and introspection changes(INFO 字段和内省变化)
- MEMORY STATS: Show cluster.links memory usage (#10302)
内存统计:显示 cluster.links 内存使用情况 (#10302)
Module API changes(模块 API 更改)
- APIs for exposing module configs to config file and CONFIG command (#10285)
用于将模块配置暴露给配置文件和 CONFIG 命令的 API (#10285)
- Add an event notifying about configuration changes (#10311)
添加一个通知配置更改的事件 (#10311)
- Add API for redacting command arguments from SLOWLOG and MONITOR (#10425)
添加用于编辑来自 SLOWLOG 和 MONITOR 的命令参数的 API (#10425)
- RM_Call: new flags for script mode compatibility, no writes, and error replies (#10372)
RM_Call:脚本的新标志模式兼容性、无写入和错误回复 (#10372)
Bug Fixes(错误修复)
- Sentinel: Fix no reconnect after auth-pass is changed (#10400)
Sentinel:修复 auth-pass 更改后不重新连接的问题 (#10400)
- Cluster: Fix race condition: Turn into replica on SETSLOT (#10489, #10381)
Cluster:修复竞争条件:在 SETSLOT 上转换为副本(#10489,#10381)
- XREADGROUP: Unblock client when the stream key is deleted (#10306)
XREADGROUP:删除流密钥时取消阻止客户端(#10306)
Fixes for issue in previous release candidates of Redis 7.0(Redis 7.0 的先前版本候选中的问题修复)
- ACL DRYRUN does not validate the verified command args. (#10405)
ACL DRYRUN 不验证已验证的命令参数。 (#10405)
- ACL DRYRUN returns the tested common permission error (#10359)
ACL DRYRUN 返回经过测试的常见权限错误 (#10359)
- Incorrect parsing of hostname information from nodes.conf (#10435)
对来自 nodes.conf 的主机名信息的解析不正确 (#10435)
- BITSET and BITFIELD SET should propagate even if just length changed (#10459)
BITSET 和 BITFIELD SET 应该传播,即使只是长度改变了 (#10459)
- SHUTDOWN, Fix a possible crash when the shutdown was aborted (#10440)
SHUTDOWN,修复关闭中止时可能发生的崩溃 (#10440)
- Script should not allow may-replicate commands when client pause write (#10364)
当客户端暂停写入时,脚本不应允许重复命令 (#10364)
- Optimization tracking memory usage from i/o threads. (#10401)
优化跟踪来自 i/o 线程的内存使用情况。 (#10401)
- Initialize help when using redis-cli help or redis-cli ? (#10382)
使用 redis-cli 帮助或 redis-cli 时初始化帮助? (#10382)
- Dismiss COW of client output buffer now that it’s dynamic (#10371)
关闭客户端输出缓冲区的 COW,因为它是动态的 (#10371)
- Fix memory corruption when EVAL fails before being processed (#10519)
修复处理前 EVAL 失败时的内存损坏 (#10519)
Redis 7.0 RC2 Released Mon Feb 28 12:00:00 IST 2022(Redis 7.0 RC2 于 2022 年 2 月 28 日 星期一 12:00:00 IST 发布)
Upgrade urgency LOW: This is another Release Candidate of Redis 7.0.
升级紧迫性低
:这是 Redis 7.0 的另一个候选版本。
New Features(新功能)
- Add stream consumer group lag tracking and reporting (#9127)
添加流消费者组滞后跟踪和报告 (#9127)
- Add API for functions and eval Lua scripts to check ACL explicitly (#10220)
添加函数 API 和 eval Lua 脚本以显式检查 ACL (#10220)
New user commands or command arguments(新的用户命令或命令参数)
- COMMAND GETKEYSANDFLAGS sub-command (#10237)
COMMAND GETKEYSANDFLAGS 子命令(#10237)
- INFO command can take multiple section arguments (#6891)
INFO 命令可以采用多个部分参数(#6891)
- XGROUP CREATE and SETID: new ENTRIESREAD optional argument (#9127)
XGROUP CREATE 和 SETID:新的 ENTRIESREAD 可选参数(#9127)
- XSETID new ENTRIESADDED and MAXDELETEDID optional arguments (#9127)
XSETID 新的 ENTRIESADDED 和 MAXDELETEDID 可选参数(#9127)
Command replies that have been extended(已扩展的命令回复)
- XINFO reports consumer group lag and a few other fields (#9127)
XINFO 报告消费者组滞后和一些其他字段 (#9127)
- XAUTOCLAIM returns a new element with a list of deletes IDs (#10227)
XAUTOCLAIM 返回一个包含删除 ID 列表的新元素 (#10227)
Potentially Breaking Changes(潜在的重大变化)
- X[AUTO]CLAIM skips deleted entries instead of replying with Nil, and deletes them from the pending entry list (#10227)
X[AUTO]CLAIM 跳过已删除的条目而不是用 Nil 回复,并将它们从待处理条目列表中删除 (#10227)
- Fix messed up error codes returned from EVAL scripts (#10218, #10329)
修复从 EVAL 脚本返回的混乱错误代码 (#10218,#10329)
- COMMAND INFO, Renames key-spec “CHANNEL” flag to be “NOT_KEY” (#10299)
命令信息,重命名键-spec "CHANNEL" 标志为 "NOT_KEY" (#10299)
Performance and resource utilization improvements(性能和资源利用率改进)
- Reduce system calls and small packets for client replies (#9934)
减少客户端回复的系统调用和小数据包 (#9934)
- Reduce memory usage of stale clients (#9822)
减少陈旧客户端的内存使用 (#9822)
- Fix regression in Z[REV]RANGE commands (by-rank) introduced in Redis 6.2 (#10337)
修复 Redis 6.2 中引入的 Z[REV]RANGE 命令(按等级)的回归 (#10337)
Changes in CLI tools(CLI 工具的变化)
- Adapt redis-check-aof tool for Multi Part AOF (#10061)
为多部分 AOF 调整 redis-check-aof 工具 (#10061)
- Enable redis-benchmark to use RESP3 protocol mode (#10335)
启用 redis-benchmark 以使用 RESP3 协议模式 (#10335)
Platform / toolchain support related improvements(平台/工具链支持相关改进)
- Fix OpenSSL 3.0.x related issues (#10291)
修复 OpenSSL 3.0.x 相关问题 (#10291)
INFO fields and introspection changes(INFO 字段和内省变化)
- COMMAND INFO key-specs has new variable_flags flag (#10237, #10148)
COMMAND INFO key-specs 有新的 variable_flags 标志(#10237,#10148)
- INFO stats: add aof_rewrites and rdb_snapshots counters (#10178)
INFO 统计:添加 aof_rewrites 和 rdb_snapshots 计数器(#10178)
- INFO stats: add reply_buffer_shrinks and reply_buffer_expends (#9822)
INFO 统计:添加 reply_buffer_shrinks 和 reply_buffer_expends(#9822)
- INFO modules: add no-implicit-signal-modified module option (#10284)
INFO 模块:添加 no-implicit -signal-modified 模块选项 (#10284)
Module API changes(模块 API 更改)
- Add RM_SetCommandInfo API to set command metadata for the new COMMAND introspection features and ACL key permissions (#10108)
添加 RM_SetCommandInfo API 来为新的 COMMAND 自省功能和 ACL 密钥权限设置命令元数据 (#10108)
- Add RM_KeyAtPosWithFlags and RM_GetCommandKeysWithFlags APIs (#10237)
添加 RM_KeyAtPosWithFlags 和 RM_GetCommandKeysWithFlags API(#10237)
- Add getchannels-api command flag and RM_IsChannelsPositionRequest, RM_ChannelAtPosWithFlags APIs (#10299)
添加 getchannels-api 命令标志和 RM_IsChannelsPositionRequest、RM_ChannelAtPosWithFlags APIs(#10299)
- Change RM_ACLCheckChannelPermissions and RM_ACLCheckKeyPermissions APIs (released in RC1) to take different flags (#10299)
更改RM_ACLCheckChannelPermissions 和 RM_ACLCheckKeyPermissions API(在 RC1 中发布)采用不同的标志 (#10299)
- Fix RM_SetModuleOptions flag collision. Bug in 7.0 RC1 header file, modules that used OPTIONS_HANDLE_REPL_ASYNC_LOAD will mess up key invalidations (#10284)
修复 RM_SetModuleOptions 标志冲突。7.0 RC1 头文件中的错误,使用 OPTIONS_HANDLE_REPL_ASYNC_LOAD 的模块会弄乱密钥失效 (#10284)
Bug Fixes(错误修复)
- Modules: Fix thread safety violation when a module thread adds an error reply, broken in 6.2 (#10278)
Modules(模块):修复模块线程添加错误回复时的线程安全冲突,在 6.2 中损坏 (#10278)
- Lua: Fix Eval scripts active defrag, broken 7.0 in RC1 (#10271)
Lua:修复 Eval 脚本主动碎片整理,在 RC1 中损坏 7.0 (#10271)
- Fix geo search bounding box check causing missing results (#10018)
修复 geo(地理)搜索边界框检查导致丢失结果(#10018)
- Lua: Add checks for min-slave-* configs when evaluating Lua scripts and Functions (#10160)
Lua:在评估 Lua 脚本和函数时添加对 min-slave-* 配置的检查(#10160)
- Modules: Prevent crashes and memory leaks when MODULE UNLOAD is used on module with a pending timer (#10187)
Modules(模块):在带有挂起计时器的模块上使用模块卸载时防止崩溃和内存泄漏(#10187)
- Fix error stats and failed command stats for blocked clients (#10309)
修复被阻止客户端的错误统计信息和失败命令统计信息 (#10309)
- Lua/Modules: Fix missing and duplicate error stats for scripts and modules (#10329, #10278)
Lua/Modules:修复脚本和模块的缺失和重复错误统计信息(#10329、#10278)
- Check target node is a primary during cluster setslot (#10277)
检查目标节点在集群设置时隙期间是否为主(#10277)
- Fix key deletion not to invalidate WATCH when used on a logically expired key (#10256)
修复密钥删除,在逻辑过期密钥上使用时不会使 WATCH 无效(#10256)
- Sentinel: return an error if configuration save fails (#10151)
Sentinel(哨兵):如果配置保存失败则返回错误(#10151)
- Sentinel: fix a free-after-use issue re-registering Sentinels (#10333)
Sentinel(哨兵):修复 re-registering(重新注册)Sentinels 后 free-after-use(使用后免费)的问题(#10333)
Redis 7.0 RC1 Released Mon Jan 31 12:00:00 IST 2022(Redis 7.0 RC1 于 2022 年 1 月 31 日 星期一 12:00:00 IST 发布)
Upgrade urgency LOW: This is the first Release Candidate of Redis 7.0.
升级紧迫性低
:这是 Redis 7.0 的第一个候选版本。
Redis Release Candidate (RC) versions are early versions that are made available for early adopters in the community to test them. We do not consider them suitable for production environments.
Redis Release Candidate (RC) 版本是早期版本,可供社区中的早期采用者进行测试。我们认为它们不适合生产环境。
Introduction to the Redis 7.0 release(Redis 7.0 版本介绍)
Redis 7.0 includes several new user-facing features, significant performance optimizations, and many other improvements. It also includes changes that
potentially break backwards compatibility with older versions. We urge users to review the release notes carefully before upgrading.
Redis 7.0 包括几个面向用户的新功能、重要的性能优化和许多其他改进。它还包括可能破坏与旧版本的向后兼容性的更改。我们敦促用户在升级前仔细阅读发行说明。
In particular, users should be aware of the following changes(用户尤其应注意以下更改):
- Redis 7 stores AOF as multiple files in a folder; see Multi-Part AOF below.
1、Redis 7将AOF存储为一个文件夹中的多个文件;请参阅下面的多部分 AOF。
- Redis 7 uses a new version 10 format for RDB files, which is incompatible with older versions.
2、Redis 7 对RDB 文件使用了新的version 10 格式,与旧版本不兼容。
- Redis 7 converts ziplist encoded keys to listpacks on the fly when loading an older RDB format. Conversion applies to loading a file from disk or replicating from a Redis master and will slightly increase loading time.
3、当加载旧的 RDB 格式时,Redis 7 将 ziplist 编码的键动态转换为列表包。转换适用于从磁盘加载文件或从 Redis主服务器复制文件,并且会稍微增加加载时间。
- See sections about breaking changes mentioned below.
4、请参阅下面提到的有关重大更改的部分。
Here is a comprehensive list of changes in this release compared to 6.2.6. Each one includes the PR number that added it so that you can get more details at https://github.com/redis/redis/pull/
以下是此版本与 6.2.6 相比的完整更改列表。每个都包含添加它的 PR 编号,以便您可以在 https://github.com/redis/redis/pull/<number> 获得更多详细信息
New Features(新功能)
- Redis Functions: A new way to extend Redis with server-side scripts (#8693)
Redis Functions:一种使用服务器端脚本扩展 Redis 的新方法 (#8693)
see https://redis.io/topics/functions-intro
请参阅 https://redis.io/topics/functions-intro
- ACL: Fine-grained key-based permissions and allow users to support multiple sets of command rules with selectors (#9974)
ACL:细粒度的基于密钥的权限,允许用户支持多个集合带选择器的命令规则 (#9974)
see https://redis.io/topics/acl#key-permissions and https://redis.io/topics/acl#selectors.
请参阅 https://redis.io/topics/acl#key-permissions 和 https://redis.io/topics/acl#selectors。
- Cluster: Sharded (node-specific) Pub/Sub support (#8621)
Cluster(集群):分片(特定于节点)Pub/Sub 支持(#8621)
see https://redis.io/topics/pubsub#sharded-pubsub
请参阅 https://redis.io/topics/pubsub#sharded-pubsub
- First-class handling of sub-commands in most contexts (affecting ACL categories, INFO commandstats, etc.) (#9504, #10147)
大多数情况下对子命令的一流处理(影响 ACL 类别, INFO commandstats 等)(#9504,#10147)
- Command metadata and documentation (#10104)
命令元数据和文档(#10104)
see https://redis.io/commands/command-docs, https://redis.io/topics/command-tips
请参阅 https://redis.io/commands/command-docs,https://redis.io/topics/command-tips
- Command key-specs. A better way for clients to locate key arguments and their read/write purpose (#8324, #10122, #10167)
命令 key-specs(键规范)。客户端定位关键参数及其读/写目的的更好方法(#8324、#10122、#10167)
see https://redis.io/topics/key-specs
请参阅 https://redis.io/topics/key-specs
- Multi-Part AOF mechanism to avoid AOF rewrite overheads (#9788)
避免 AOF 重写开销的多部分 AOF 机制 (#9788)
- Cluster: Support for hostnames, instead of IP addresses only (#9530)
Cluster(集群):支持主机名,而不仅仅是 IP 地址(#9530)
- Improved management of memory consumed by network buffers, and an option to drop clients when total memory exceeds a limit (#8687)
改进了对网络缓冲区消耗的内存的管理,以及当总内存超过限制时删除客户端的选项(#8687)
- Cluster: A mechanism for disconnecting cluster bus connections to prevent uncontrolled buffer growth (#9774)
Cluster(集群):A断开集群总线连接以防止不受控制的缓冲区增长的机制 (#9774)
- AOF: Timestamp annotations and support for point-in-time recovery (#9326)
AOF:时间戳注释和对时间点恢复的支持 (#9326)
- Lua: support Function flags in EVAL scripts (#10126)
Lua:支持 EVAL 脚本中的函数标志 (#10126)
see https://redis.io/topics/eval-intro#eval-flags
请参阅 https:/ /redis.io/topics/eval-intro#eval-flags
- Lua: Support RESP3 reply for Verbatim and Big-Number types (#9202)
Lua: 支持 Verbatim 和 Big-Number 类型的 RESP3 回复 (#9202)
- Lua: Get Redis version via redis.REDIS_VERSION, redis.REDIS_VERSION_NUM (#10066)
Lua: 通过 redis.REDIS_VERSION, redis.REDIS_VERSION_NUM 获取 Redis 版本 (#10066)
New user commands or command arguments(新的用户命令或命令参数)
- ZMPOP, BZMPOP commands (#9484)
ZMPOP、BZMPOP 命令(#9484)
- LMPOP, BLMPOP commands (#9373)
LMPOP、BLMPOP 命令(#9373)
- SINTERCARD, ZINTERCARD commands (#8946, #9425)
SINTERCARD、ZINTERCARD 命令(#8946、#9425)
- SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB (#8621)
SPUBLISH、SSUBSCRIBE、SUNSUBSCRIBE、PUBSUB SHARDCHANNELS/SHARDNUMSUB(#8621)
- EXPIRETIME and PEXPIRETIME commands (#8474)
EXPIRETIME 和 PEXPIRETIME 命令(#8474)
- EXPIRE command group supports NX/XX/GT/LT options (#2795)
EXPIRE 命令组支持 NX/XX/GT/LT 选项 (#2795)
- SET command supports combining NX and GET flags (#8906)
SET 命令支持组合 NX 和 GET 标志 (#8906)
- BITPOS, BITCOUNT accepts BIT index (#9324)
BITPOS、BITCOUNT 接受 BIT 索引 (#9324)
- EVAL_RO, EVALSHA_RO command variants, to run on read-only replicas (#8820)
EVAL_RO、EVALSHA_RO 命令变体,在只读副本上运行(#8820)
- SORT_RO command, to run on read-only replicas (#9299)
SORT_RO 命令,在只读副本上运行(#9299)
- SHUTDOWN arguments: NOW, FORCE, ABORT (#9872)
SHUTDOWN 参数:NOW,FORCE,ABORT(#9872)
- FUNCTION *, FCALL, FCALL_RO - https://redis.io/commands/function-load
FUNCTION *,FCALL,FCALL_RO - https ://redis.io/commands/function-load
- CONFIG SET/GET can handle multiple configs atomically, in one call (#9748, #9914)
CONFIG SET/GET 可以在一次调用中自动处理多个配置(#9748,#9914)
- QUIT promoted to be a proper command, HOST: and POST demoted (#9798)
QUIT 提升为正确的命令,HOST:和 POST 降级(#9798)
- XADD supports auto sequence number via -* (#9217)
XADD 通过 <ms>-* 支持自动序列号 (#9217)
New administrative and introspection commands and command arguments(新的管理和内省命令和命令参数)
- COMMAND DOCS (#9656, #10056, #10104)
COMMAND DOCS(命令文档)(#9656,#10056,#10104)
- COMMAND LIST (#9504)
COMMAND LIST(命令列表)(#9504)
- COMMAND INFO accepts sub-commands as args, and no args too (#9504, #10056)
COMMAND INFO(命令信息)接受子命令作为参数,也没有参数(#9504,#10056)
- LATENCY HISTOGRAM (#9462)
LATENCY HISTOGRAM(延迟直方图)(#9462)
- CLUSTER LINKS (#9774)
CLUSTER LINKS(集群链接) (#9774)
- CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE (#9445)
CLUSTER DELSLOTSRANGE 和 CLUSTER ADDSLOTSRANGE (#9445)
- CLIENT NO-EVICT (#8687)
CLIENT NO-EVICT (#8687)
- ACL DRYRUN (#9974)
ACL DRYRUN (#9974)
- SLOWLOG GET supports passing in -1 to get all entries (#9018)
SLOWLOG GET 支持传入 -1 以获取所有条目 (#9018)
Command replies that have been extended(已扩展的命令回复)
- COMMAND and COMMAND INFO extended with tips, key-specs and sub-commands see https://redis.io/commands/command
COMMAND 和 COMMAND INFO 扩展了提示、关键规范和子命令,请参阅 https://redis.io/commands/command
- ACL CAT, COMMAND LIST list sub-commands (#10127)
ACL CAT、COMMAND LIST 列表子命令 (#10127)
- MODULE LIST reply includes path and args (#4848)
MODULE LIST 回复包括路径和参数(#4848)
- OBJECT ENCODING returns listpack instead of ziplist (#8887, #9366)
OBJECT ENCODING 返回 listpack 而不是 ziplist (#8887, #9366)
- CLUSTER SLOTS hostname support (#9530)
CLUSTER SLOTS 主机名支持 (#9530)
- COMMAND command: Added the
blocking
andmodule
flags (#10104, #9656)COMMAND 命令:添加了
blocking和
module标志(#10104, #9656)
Potentially Breaking Changes(潜在的重大变化)
- Modifying the bind parameter to a non-default value will no longer implicitly disable protected-mode (#9034)
将绑定参数修改为非默认值将不再隐式禁用保护模式(#9034)
- Remove EVAL script verbatim replication, propagation, and deterministic execution logic (#9812)
删除 EVAL 脚本逐字复制、传播和确定性执行逻辑(#9812)
This has been deprecated and off by default since Redis 6 and is no longer supported.
自 Redis 6 以来,这已被弃用并默认关闭且不再受支持。
- ACL: pub/sub channels are blocked by default (acl-pubsub-default=resetchannels) (#10181)
ACL:pub/sub 通道默认被阻止(acl-pubsub-default=resetchannels)(#10181)
- SCRIPT LOAD and SCRIPT FLUSH are no longer propagated to replicas / AOF (#9812)
SCRIPT LOAD 和 SCRIPT FLUSH 不再传播到 replicas(副本)/ AOF(#9812)
- ACL: Declarations of duplicate ACL users in startup files and command line arguments will result in an error, whereas previously the last declaration would overwrite the others. (#9330)
ACL:重复 ACL 用户的声明在启动文件和命令行参数中,将导致错误,而以前最后的声明将覆盖其它声明。 (#9330)
- Replication: TTLs are always replicated as absolute (not relative) millisecond timestamps (#8474)
Replication(复制):TTL 始终被复制为绝对(而非相对)毫秒时间戳(#8474)
- Fixes in handling multi-key commands with expired keys on writable replicas (#9572)
修复了在可写副本上处理带有过期密钥的多键命令(#9572)
- CONFIG SET maxmemory returns before starting eviction (#10019)
CONFIG SET maxmemory 在开始驱逐之前返回(#10019)
- AOF: The new Multi-Part mechanism stores data as a set of multiple files in a designated folder (#9788)
AOF:新的多部分机制将数据作为一组多个文件存储在指定文件夹中 (#9788)
- Remove STRALGO command, preserve LCS a standalone command which only works on keys (#9799)
删除 STRALGO 命令,保留 LCS 一个仅适用于键的独立命令 (#9799)
- Remove gopher protocol support (#9057)
删除 gopher 协议支持 (#9057)
- MODULE and DEBUG commands disabled (protected) by default, for better security (#9920)
默认禁用(保护)MODULE 和 DEBUG 命令,以提高安全性(#9920)
- Snapshot-creating and other admin commands in MULTI/EXEC transactions are now rejected (#10015)
MULTI/EXEC 事务中的 Snapshot-creating(快照创建)和其它 admin(管理)命令现在被拒绝 (#10015)
- PING is now rejected with -MASTERDOWN when replica-serve-stale-data=no (#9757)
当 replica-serve-stale-data=no 时,PING 使用 -MASTERDOWN 现在会被拒绝 (#9757)
- ACL GETUSER reply now uses ACL syntax for
keys
andchannels
(#9974)ACL GETUSER 现在回复使用
keys和
channels的 ACL 语法(#9974)
- COMMAND reply drops
random
andsort-for-scripts
flags, which are now part of command tips (#10104)COMMAND 回复删除 “random” 和 “sort-for-scripts” 标志,现在是命令提示的一部分 (#10104)
- LPOP/RPOP with count against non-existing list return null array (#10095)
对不存在的列表进行计数的 LPOP/RPOP 返回空数组 (#10095)
- INFO commandstats now shows the stats per sub-command (#9504)
INFO commandstats 现在显示每个子命令的统计信息 (#9504)
- ZPOPMIN/ZPOPMAX used to produce wrong replies when count is 0 with non-zset (#9711)
ZPOPMIN/ZPOPMAX 用于在非 zset 计数为 0 时产生错误回复 (#9711)
- LPOP/RPOP used to produce wrong replies when count is 0 (#9692)
LPOP/RPOP 用于当计数为 0 时产生错误的回复 (#9692)
- CONFIG GET bind now returns the current value in effect, even if the implicit default is in use (#9034)
CONFIG GET 绑定现在返回有效的当前值,即使正在使用隐式默认值 (#9034)
- CONFIG REWRITE now rewrites the list of modules to load (#4848)
CONFIG REWRITE 现在重写要加载的模块列表 (#4848)
- Config: repl-diskless-sync is now set to yes by default (#10092)
Config(配置):repl-diskless-sync 现在默认设置为 yes (#10092)
- When shutting down, Redis can optionally wait for replicas to catch up on the replication link (#9872)
关闭时,Redis 可以选择等待副本赶上复制链接 (#9872)
- Most CONFIG SET, REWRITE, RESETSTAT commands are now allowed during loading (#9878)
大多数 CONFIG SET、REWRITE、RESETSTAT 命令现在在加载期间允许(#9878)
- READONLY and READWRITE commands are now allowed when loading and on stale replicas (#7425)
现在在加载和陈旧副本时允许 READONLY 和 READWRITE 命令(#7425)
- Fix ACL category for SELECT, WAIT, ROLE, LASTSAVE, READONLY, READWRITE, ASKING (#9208)
修复 SELECT、WAIT、ROLE、LASTSAVE、READONLY、READWRITE、ASKING 的 ACL 类别(#9208)
- RESET is now allowed even when on unauthenticated connections (#9798)
现在即使在未经身份验证的连接上也允许重置 (#9798)
- SCRIPT LOAD is now allowed on stale replicas (#10126)
现在允许在陈旧的副本上加载脚本 (#10126)
Security improvements(安全改进)
- Sensitive configs and commands blocked (protected) by default (#9920)
默认情况下阻止(保护)敏感配置和命令(#9920)
- Improve bind and protected-mode config handling (#9034)
改进绑定和保护模式配置处理(#9034)
- Sentinel: avoid logging auth-pass value (#9652)
Sentinel(哨兵):避免记录 auth-pass 值(#9652)
- redis-cli: sensitive commands bypass the history file (#8895)
redis-cli:敏感命令绕过历史文件 (#8895)
Performance and resource utilization improvements(性能和资源利用率改进)
- Significant memory saving and latency improvements in cluster mode (#9356)
集群模式下的显着内存节省和延迟改进 (#9356)
- Significant memory savings in case of many hash or zset keys (#9228)
在许多哈希或 zset 键的情况下显着节省内存 (#9228)
- Replication backlog and replicas use one global shared replication buffer (#9166)
复制积压和副本使用一个全局共享复制缓冲区 (#9166)
- Significant reduction of copy-on-write memory overheads (#8974)
显着减少 copy-on-write (写时复制)内存开销 (#8974)
- Free unused capacity in the cluster send buffer (#9255)
集群发送缓冲区中未使用的容量(#9255)
- Memory efficiency, make full use of client struct memory for reply buffers (#8968)
内存效率,充分利用客户端结构内存作为回复缓冲区(#8968)
- Replace ziplist with listpack in Hash, List, Zset (#8887, #9366, #9740)
在 Hash、List 中用 listpack 替换 ziplist , Zset (#8887, #9366, #9740)
- Add support for list type to store elements larger than 4GB (#9357)
添加对列表类型的支持以存储大于 4GB 的元素 (#9357)
- Reuse temporary client objects for blocked clients by module (#9940)
按模块为阻塞的客户端重用临时客户端对象 (#9940)
- Remove command argument count limit, dynamically grow argv buffer (#9528)
动态删除命令参数计数限制增加 argv 缓冲区 (#9528)
- Optimize list type operations to seek from the nearest end (#9454)
优化列表类型操作以从最近的末端开始查找 (#9454)
- Improvements in fsync to avoid large writes to disk (#9409)
改进 fsync 以避免大量写入磁盘 (#9409)
- BITSET and BITFIELD SET only propagated when the value actually changed (#9403)
BITSET 和 BITFIELD SET 仅在值实际更改时传播 (#9403)
- Improve latency when a client is unblocked by module timer (#9593)
当客户端被模块解除阻塞时改善延迟计时器 (#9593)
Other General Improvements(其他一般改进)
- Make partial sync possible after master reboot (#8015)
主重启后实现部分同步(#8015)
- Always create a base AOF file when redis starts from empty (#10102)
当 redis 从空启动时总是创建一个基本 AOF 文件(#10102)
- Replica keep serving data during repl-diskless-load=swapdb for better availability (#9323)
副本在 repl-diskless-load=swapdb 期间保持服务数据以获得更好的可用性(#9323)
Changes in CLI tools(CLI 工具的更改)
- redis-cli --json, and -2 options (#9954)
redis-cli --json 和 -2 选项 (#9954)
- redis-cli --scan, add sleep interval option (#3751)
redis-cli --scan,添加睡眠间隔选项 (#3751)
- redis-cli --replica optimization, skip RDB generation (#10044)
redis-cli --replica 优化,跳过 RDB 生成 (#10044)
- redis-cli --functions-rdb, generate RDB with Functions only (#9968)
redis-cli --functions-rdb,仅生成具有函数的 RDB (#9968)
- redis-cli -X, take an arbitrary arg from stdin, extend --cluster call take -x (#9980)
redis-cli -X,采取一个来自 stdin 的任意 arg,extend --cluster call take -x (#9980)
- redis-benchmark -x takes an argument from stdin (#9130)
redis-benchmark -x 从 stdin (#9130)
- redis-benchmark, Added URI support (#9314)
redis-benchmark,添加 URI 支持 (#9314)
- redis-cli monitor and pubsub can be aborted with Ctrl+C, keeping the cli alive (#9347)
redis-cli 监视器和 pubsub 可以使用 Ctrl+C 中止,使 cli 保持活动状态 (#9347)
Platform / toolchain support related improvements(平台/工具链支持相关改进)
- Upgrade jemalloc 5.2.1 (#9623)
升级 jemalloc 5.2.1 (#9623)
- Fix RSS metrics on NetBSD and OpenBSD (#10116, #10149)
修复 NetBSD 和 OpenBSD 上的 RSS 指标 (#10116, #10149)
- Check somaxconn system settings on macOS, FreeBSD and OpenBSD (#9972)
检查 macOS、FreeBSD 和 OpenBSD 上的 somaxconn 系统设置 (#9972)
- Better fsync on MacOS, improve power failure safety (#9545)
在 MacOS 上更好的 fsync,提高电源故障安全性(#9545)
New configuration options(新的配置选项)
- CONFIG SET/GET can handle multiple configs in one call (#9748, #9914)
CONFIG SET/GET 可以在一次调用中处理多个配置(#9748,#9914)
- Support glob pattern matching for config include files (#8980)
支持配置包含文件的 glob 模式匹配(#8980)
- appenddirname, folder where multi-part AOF files are stored (#9788)
appenddirname(追加目录名),存储多部分 AOF 文件的文件夹(#9788)
- shutdown-timeout, default 10 seconds (#9872)
shutdown-timeout(关闭-超时),默认 10 秒 (#9872)
- maxmemory-clients, allows limiting the total memory usage by all clients (#8687)
maxmemory-clients(最大内存-客户端列表),允许限制所有客户端的总内存使用量 (#8687)
- cluster-port, can control the bind port of cluster bus (#9389)
cluster-port(集群-端口),可以控制集群总线的绑定端口 (#9389)
- bind-source-addr, configuration argument control IP of outgoing connections (#9142)
bind-source-addr(绑定-源-地址),配置参数控制传出连接的 IP (#9142)
- busy-reply-threshold, alias for the old lua-time-limit (#9963)
busy-reply-threshold(忙碌-答复-阈值),旧 lua-time-limit 的别名 (#9963)
- repl-diskless-sync-max-replicas, allows faster replication in some cases (#10092)
repl-diskless-sync-max-replicas(复制-无盘-同步-最大-副本),在某些情况下允许更快的复制(#10092)
- latency-tracking, enabled by default, and latency-tracking-info-percentiles (#9462)
latency-tracking(延迟-跟踪),默认启用,延迟跟踪信息百分位数(#9462)
- cluster-announce-hostnameand cluster-preferred-endpoint-type (#9530)
cluster-announce-hostnameand(集群-公告-主机名) cluster-preferred-endpoint-type(集群-首选-端点-类型)(#9530)
- cluster-allow-pubsubshard-when-down (#8621)
cluster-allow-pubsubshard-when-down(集群-允许-发布子分片-当下线时) (#8621)
- cluster-link-sendbuf-limit (#9774)
cluster-link-sendbuf-limit(集群-链接-发送buf-限制) (#9774)
- list-max-listpack-, hash-max-listpack-, zset-max-listpack-* as aliases for the old ziplist configs (#8887, #9366, #9740)
list-max-listpack-*, hash-max-listpack-*, zset-max-listpack-* 作为旧 ziplist 配置的别名 (#8887、#9366、#9740)
INFO fields and introspection changes(INFO 字段和内省变化)
- INFO: latencystats section (#9462)
INFO(信息):latencystats部分(#9462)
- INFO: total_active_defrag_time and current_active_defrag_time (#9377)
INFO(信息):total_active_defrag_time和current_active_defrag_time(#9377)
- INFO: total_eviction_exceeded_time and current_eviction_exceeded_time (#9031)
INFO(信息):total_eviction_exceeded_time和current_eviction_exceeded_time(#9031)
- INFO: evicted_clients (#8687)
INFO(信息):evicted_clients(#8687)
- INFO: mem_cluster_links, total_cluster_links_buffer_limit_exceeded (#9774)
INFO(信息):mem_cluster_links,total_cluster_links_buffer_limit(#9774)
- INFO: current_cow_peak (#8974)
INFO(信息): current_cow_peak (#8974)
- INFO: Remove aof_rewrite_buffer_length (#9788)
INFO(信息):删除 aof_rewrite_buffer_length (#9788)
- MEMORY STATS: Report slot to keys map size in in cluster mode (#10017)
MEMORY STATS(内存统计):在集群模式下报告插槽到键映射大小 (#10017)
- INFO MEMORY: changes to separate memory usage of Functions and EVAL (#9780)
INFO MEMORY(信息内存):更改为函数和 EVAL 的单独内存使用(#9780)
- INFO MEMORY: Add mem_total_replication_buffers, change meaning of mem_clients_slaves (#9166)
INFO MEMORY(信息内存):添加 mem_total_replication_buffers,更改 mem_clients_slaves 的含义(#9166)
- CLIENT LIST: tot-mem, multi-mem (#8687)
CLIENT LIST(客户端列表):tot-mem,multi-mem(#8687)
- CLIENT LIST, INFO: Show RESP version (#9508)
CLIENT LIST(客户端列表),INFO:显示 RESP 版本(#9508)
- SENTINEL INFO: tilt_mode_since (#9000)
SENTINEL INFO(哨兵信息):tilt_mode_since(#9000)
- LATENCY: Track module-acquire-GIL latency (#9608)
LATENCY(延迟):跟踪模块获取 GIL 延迟 (#9608)
Module API changes(模块 API 更改)
- Add API for replying with RESP3 types (#8521, #9639, #9632)
添加用于回复 RESP3 类型的 API(#8521、#9639、#9632)
- Add API for parsing RESP3 replies from RM_Call (#9202)
添加用于解析来自 RM_Call 的 RESP3 回复的 API(#9202)
- Add RM_Call ‘0’ and ‘3’ flags to control RESP version to be used (#9202)
添加 RM_Call '0' 和 '3' 标志以控制要使用的 RESP 版本(#9202)
- Add Support for validating ACL explicitly (#9309, #9974)
添加对显式验证 ACL 的支持(#9309、#9974)
- Add missing list type functionality APIs (#8439)
添加缺少的列表类型功能 API(#8439)
- Add API for yielding to Redis events during long busy jobs (#9963)
添加用于在长时间繁忙作业期间屈服于 Redis 事件的 API(#9963)
- Add API for registering other file descriptors to the Redis event loop (#10001)
添加用于将其它文件描述符注册到 Redis 事件循环的 API (#10001)
- Enhance mem_usage/free_effort/unlink/copy and IO callbacks to have key name and DB index (#8999)
增强 mem_usage/free_effort/unlink/copy 和 IO 回调以具有键名和数据库索引 (#8999)
- Enhance mem_usage callback to get the requested sample size (#9612)
增强 mem_usage 回调以获取请求的样本大小 (#9612)
- RM_GetContextFlags: CTX_FLAGS_ASYNC_LOADING, CTX_FLAGS_RESP3 (#9323, #9202)
RM_GetContextFlags : CTX_FLAGS_ASYNC_LOADING, CTX_FLAGS_RESP3 (#9323, #9202)
- Mark APIs as non-experimental (#9983)
将 API 标记为非实验性 (#9983)
- RM_CreateSubcommand (#9504)
RM_CreateSubcommand (#9504)
- RM_KeyExists (#9600)
RM_KeyExists (#9600)
- RM_TrimStringAllocation (#9540)
RM_TrimStringAllocation (#9540)
- RM_LoadDataTypeFromStringEncver (#9537)
RM_LoadDataTypeFromStringEncver (#9537)
- RM_MonotonicMicroseconds (#10101)
RM_MonotonicMicroseconds (#10101)
- Add ReplAsyncLoad event and deprecate the ReplBackup event (#9323)
添加 ReplAsyncLoad 事件并弃用 ReplBackup 事件 (#9323)
- Add RM_SetModuleOptions OPTIONS_HANDLE_REPL_ASYNC_LOAD flag (#9323)
添加 RM_SetModuleOpti ons OPTIONS_HANDLE_REPL_ASYNC_LOAD 标志 (#9323)
Bug Fixes(错误修复)
- Fix COMMAND GETKEYS on EVAL without keys (#9733)
修复没有密钥的 EVAL 上的 COMMAND GETKEYS (#9733)
- Improve MEMORY USAGE with allocator overheads (#9095)
通过分配器开销改进 MEMORY USAGE (#9095)
- Unpause clients after manual failover ends instead of waiting for timed (#9676)
在手动故障转移结束后取消暂停客户端,而不是等待定时 (#9676)
- Lua: fix crash on a script call with many arguments, a regression in v6.2.6 (#9809)
Lua:修复脚本调用的崩溃与许多参数,v6.2.6 中的回归(#9809)
- Lua: Use all characters to calculate string hash to prevent hash collisions (#9449)
Lua:使用所有字符计算字符串哈希以防止哈希冲突(#9449)
- Prevent LCS from allocating temp memory over proto-max-bulk-len (#9817)
防止 LCS 通过 proto-max-bulk-len 分配临时内存(#9817)
- Tracking: Make invalidation messages always after command’s reply (#9422)
跟踪:总是在命令回复后发出无效消息(#9422)
- Cluster: Hide empty replicas from CLUSTER SLOTS responses (#9287)
Cluster(集群):从 CLUSTER SLOTS 响应中隐藏空副本(#9287)
- CLIENT KILL killed all clients when used with ID of 0 (#9853)
当 ID 为 0 时,客户端 KILL 杀死所有客户端(#9853)
- Fix bugs around lists with list-compress-depth (#9849, #9779)
修复列表周围的错误列表-compress-depth (#9849, #9779)
- Fix one in a blue moon LRU bug in RESTORE, RDB loading, and module API (#9279)
修复 RESTORE、RDB 加载和模块 API 中的一个 in a blue moon LRU bug (#9279)
- Reset lazyfreed_objects info field with RESETSTAT, test for stream lazyfree (#8934)
使用 RESETSTAT 重置 lazyfreed_objects 信息字段,测试流 lazyfree (#8934)
- Fix RDB and list node compression for handling values larger than 4GB (#9776)
修复 RDB 和列表节点压缩以处理大于 4GB 的值 (#9776)
- Fix a crash when adding elements larger than 2GB to a Set or Hash (#9916)
修复添加大于 4GB 的元素时的崩溃2GB 到 Set 或 Hash(#9916)
- Diskless replication could not count as a change and skip next database SAVE (#9323)
无盘复制不能算作更改并跳过下一个数据库保存(#9323)
- Fix excessive stream trimming due to an overflow (#10068)
修复由于溢出导致的过度流裁剪(#10068)
- Safe and organized exit when receiving SIGTERM while loading (#10003)
在接收 SIGTERM 时安全且有组织地退出加载(#10003)
- Improve EXPIRE TTL overflow detection (#9839)
改进 EXPIRE TTL 溢出检测(#9839)
- Add missed error counting for INFO errorstats (#9646)
为 INFO errorstats 添加错过的错误计数(#9646)
- DECRBY LLONG_MIN caused negation overflow (#9577)
DECRBY LLONG_MIN 导致否定溢出(#9577)
- Delay discarding cached master when full synchronization (#9398)
在完全同步时延迟丢弃缓存的主机(#9398)
- Fix Stream keyspace notification and persistence triggers in consumer creation and deletion (#9263)
修复消费者创建和删除中的流键空间通知和持久性触发器(#9263)
- Fix rank overflow in zset with more than 2B entries (#9249)
修复 zset 中超过 2B 条目的等级溢出(#9249)
- Avoid starting in check-aof / check-rdb / sentinel modes if only the folder name contains that name (#9215, #9176)
如果只有文件夹名称,避免以 check-aof / check-rdb / sentinel 模式启动包含该名称(#9215,#9176)
- create the log file only after done parsing the entire config file (#6741)
仅在解析整个配置文件后才创建日志文件(#6741)
- redis-cli: Fix SCAN sleep interval for --bigkeys, --memkeys, --hotkeys (#9624)
redis-cli:修复 --bigkeys、--memkeys、--hotkeys 的 SCAN 睡眠间隔(# 9624)
- redis-cli: Fix prompt to show the right DB num and transaction state after RESET (#9096)
redis-cli:修复提示以在重置后显示正确的数据库编号和事务状态(#9096)
- Module API: fix possible propagation bugs in case a module calls CONFIG SET maxmemory outside a command (#10019, #9890)
模块 API:修复模块在命令外调用 CONFIG SET maxmemory 时可能出现的传播错误(#10019、#9890)
- Module API: carry through client RESP version to module blocked clients (#9634)
模块 API:将客户端 RESP 版本传递给模块阻塞的客户端(#9634)
- Module API: release clients blocked on module commands in cluster resharding and down state (#9483)
模块 API :释放在集群重新分片和关闭状态下模块命令阻塞的客户端(#9483)
- Sentinel: Fix availability after master reboot (#9438)
Sentinel(哨兵):修复主重启后的可用性(#9438)
- Sentinel: Fix memory leak with TLS (#9753)
Sentinel(哨兵):使用 TLS 修复内存泄漏(#9753)
- Sentinel: Fix possible failover due to duplicate zero-port (#9240)
Sentinel(哨兵):修复由于重复可能导致的故障转移零端口(#9240)
- Sentinel: Fix issues with hostname support (#10146)
Sentinel(哨兵):修复主机名支持问题(#10146)
- Sentinel: Fix election failures on certain container environments (#10197)
Sentinel(哨兵):修复某些容器环境中的选举失败(#10197)
Thanks to all the users and developers who made this release possible. We’ll follow up with more RC releases, until the code looks production ready and we don’t get reports of serious issues for a while.
感谢所有使此版本成为可能的用户和开发人员。我们将跟进更多的 RC 版本,直到代码看起来可以生产并且我们暂时没有收到严重问题的报告。
A special thank you for the amount of work put into this release by:
特别感谢您为此版本所做的大量工作:
- Guy Benoish
- Meir Shpilraien
- Oran Agra
- Chen Yang
- Zhu Binbin
- Yoav Steinberg
- sundb
- Madelyn Olson
- Yossi Gottlieb
- Viktor Söderqvist
- Wang Yuan
- Harkrishn Patro
- Nick Chun
- Ozan Tezcan
- Wen Hui
- Huang Zhw
- Nan Yan
- Filipe Oliveira
- Eduardo Semprebon
- Yaacov Hazan
- Itamar Haber
- Zhao Zhao
- Itay Perry
- Moti Cohen
- Ning Sun
- zhugezy
- Ran Shidlansik
- menwen
- Andy Pan