https://www.yii666.com/blog/12891.html
本文只是单纯地翻译Redis官方的6.2.x版本的发行说明,不会对发行说明内容做任何改动,读者如果觉得有异议,可自行去Redis官网相关网页查阅。翻译工具翻译出来的不一定百分百准确,英语好的人别喷,大家都是英语差的人,希望各位能理解和包容。当然,笔者对某些翻译拗口的词组和语句,会做适当的润色。
笔者的翻译工具使用的是“划词翻译”,官方网址: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-6.2.x发行说明 - 官方文档】:
https://raw.githubusercontent.com/redis/redis/6.2/00-RELEASENOTES
Redis 6.2 release notes(Redis 6.2 发行说明)
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 6.2.8 Released Mon 12 Dec 2022 12:00:00 IST(Redis 6.2.8 于 2022 年 12 月 12 日 星期一 12:00:00 IST 发布)
Upgrade urgency: MODERATE, Contains fixes for a few non-critical or unlikely bugs
升级紧迫性
:中等,包含对一些非严重或想象不到的bugs的修复
Performance and resource utilization improvements(性能和资源利用率改进)
- Optimize zset conversion on large ZRANGESTORE (#10789)
优化大型 ZRANGESTORE 上的 zset 转换 (#10789)
Module API changes(模块 API 更改)
- Fix crash in CLIENT_CHANGE event, when the selected database is not 0 (#11500)
修复 CLIENT_CHANGE 事件中,当所选数据库不为 0 时的崩溃(#11500)
- Fix RM_SetAbsExpire and RM_GetAbsExpire API registration (#11025, #8564)
修复 RM_SetAbsExpire 和 RM_GetAbsExpire API 注册(#11025,#8564)
Security improvements(安全改进)
- Sentinel: avoid logging auth-pass value (#9652)
Sentinel(哨兵):避免记录 auth-pass 值(#9652)
Bug Fixes(错误修复)
- Fix a crash when a Lua script returns a meta-table (#11032)
修复 Lua 脚本返回元表时的崩溃 (#11032)
- Fix ZRANGESTORE crash when zset_max_listpack_entries is 0 (#10767)
修复当 zset_max_listpack_entries 为 0 时 ZRANGESTORE 崩溃 (#10767)
- Unpause clients after manual failover ends instead of waiting for timed (#9676)
在手动故障转移结束后取消暂停客户端而不是等待定时 (#9676)
- TLS: Notify clients on connection shutdown (#10931)
TLS:通知客户端关闭连接时 (#10931)
- Avoid hang of diskless replication fork child when parent crashes (#11463)
当父进程崩溃时,避免无盘复制分叉子进程挂起 (#11463)
- Fix sentinel function that compares hostnames if failed resolve (#11419)
修复哨兵函数,如果解析失败则比较主机名 (#11419)
- 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 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 BITFIELD overflow detection on some compilers due to undefined behaviour (#9601)
修复了某些编译器上的 BITFIELD 溢出检测是由于未定义的行为 (#9601)
Redis 6.2.7 Released Wed Apr 27 12:00:00 IDT 2022(Redis 6.2.7 于 2022 年 4 月 27 日 星期三 12:00:00 IDT 发布)
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 报告]。
Potentially Breaking Fixes(潜在的破坏性修复)
- LPOP/RPOP with count against non-existing list return null array (#10095)
LPOP/RPOP 计数不存在的列表返回空数组 (#10095)
- LPOP/RPOP used to produce wrong replies when count is 0 (#9692)
LPOP/RPOP 用于在计数为 0 时产生错误回复 (#9692)
Performance and resource utilization improvements(性能和资源利用率改进)
- Speed optimization in command execution pipeline (#10502)
命令执行管道中的速度优化 (#10502)
- Fix regression in Z[REV]RANGE commands (by-rank) introduced in Redis 6.2 (#10337)
修复 Redis 6.2 中引入的 Z[REV]RANGE 命令(按等级)的回归(regression,倒退)
Platform / toolchain support related improvements(平台/工具链支持相关改进)
- Fix RSS metrics on NetBSD and OpenBSD (#10116, #10149)
修复 NetBSD 和 OpenBSD 上的 RSS 指标(#10116、#10149)
- Fix OpenSSL 3.0.x related issues (#10291)
修复 OpenSSL 3.0.x 相关问题(#10291)
Bug Fixes(错误修复)
- Lua: Add checks for min-slave-* configs when evaluating Lua scripts (#10160)
Lua:在评估 Lua 脚本时添加对 min-slave-* 配置的检查 (#10160)
- Lua: fix crash on a script call with many arguments, a regression in v6.2.6 (#9809)
Lua:修复带有多个参数的脚本调用的崩溃,v6.2.6 中的回归(regression,倒退) (#9809)
- Tracking: Make invalidation messages always after command’s reply (#9422)
Tracking(跟踪):在命令回复后始终生成无效消息 (#9422)
- Fix excessive stream trimming due to an overflow (#10068)
修复由于溢出导致的过度流修剪 (#10068)
- Add missed error counting for INFO errorstats (#9646)
为 INFO errorstats(错误统计信息)添加丢失的错误统计 (#9646)
- Fix geo search bounding box check causing missing results (#10018)
修复导致丢失结果的地理(geo)搜索边界框检查 (#10018)
- Improve EXPIRE TTL overflow detection (#9839)
改进 EXPIRE TTL 溢出检查 (#9839)
- Modules: Fix thread safety violation when a module thread adds an error reply, broken in 6.2 (#10278)
Modules(模块):修复模块线程添加错误回复时的线程安全冲突,在 6.2 中被破坏 (#10278)
- Modules: Fix missing and duplicate error stats (#10278)
Modules(模块):修复丢失和重复的错误统计信息 (#10278)
- Module APIs: release clients blocked on module commands in cluster resharding and down state (#9483)
Modules APIs(模块 APIs):释放客户端阻塞集群重新分片和关闭状态下的模块命令(#9483)
- Sentinel: Fix memory leak with TLS (#9753)
Sentinel(哨兵):修复 TLS 的内存泄漏(#9753)
- Sentinel: Fix issues with hostname support (#10146)
Sentinel(哨兵):修复主机名支持问题(#10146)
- Sentinel: Fix election failures on certain container environments (#10197)
Sentinel(哨兵):修复某些容器环境中的选举失败(#10197)
Redis 6.2.6 Released Mon Oct 4 12:00:00 IDT 2021(Redis 6.2.6 于 2021 年 10 月 4 日 星期一 12:00:00 IDT 发布)
Upgrade urgency: SECURITY, contains fixes to security issues.
升级紧迫性
:安全,包含对安全问题的修复。
Security Fixes(安全修复):
- (CVE-2021-41099) Integer to heap buffer overflow handling certain string commands and network payloads, when proto-max-bulk-len is manually configured to a non-default, very large value [reported by yiyuaner].
(CVE-2021-41099) 当 proto-max-bulk-len 手动配置为非默认的非常大的值时,处理某些字符串命令和网络负载,整数在堆缓冲区溢出 [由 yiyuaner 报告]。
- (CVE-2021-32762) Integer to heap buffer overflow issue in redis-cli and redis-sentinel parsing large multi-bulk replies on some older and less common platforms [reported by Microsoft Vulnerability Research].
(CVE-2021-32762) redis-cli 和 redis-sentinel 在一些较旧和不太常见的平台上解析大型多批量回复时出现整数在堆缓冲区溢出问题 [Microsoft 漏洞研究报告]。
- (CVE-2021-32687) Integer to heap buffer overflow with intsets, when set-max-intset-entries is manually configured to a non-default, very large value [reported by Pawel Wieczorkiewicz, AWS].
(CVE-2021-32687) 当 set-max-intset-entries 手动配置为非默认的非常大的值时,intsets(整数集) 会发生整数在堆缓冲区溢出问题 [由 AWS 的 Pawel Wieczorkiewicz 报告]。
- (CVE-2021-32675) Denial Of Service when processing RESP request payloads with a large number of elements on many connections.
(CVE-2021-32675) 在许多连接上处理具有大量元素的 RESP 请求负载时拒绝服务。
- (CVE-2021-32672) Random heap reading issue with Lua Debugger [reported by Meir Shpilraien].
(CVE-2021-32672) Lua 调试器的随机堆读取问题 [由 Meir Shpilraien 报告]。
- (CVE-2021-32628) Integer to heap buffer overflow handling ziplist-encoded data types, when configuring a large, non-default value for hash-max-ziplist-entries, hash-max-ziplist-value, zset-max-ziplist-entries or zset-max-ziplist-value [reported by sundb].
(CVE-2021-32628) 处理 ziplist-encoded 的数据类型时,当为 hash-max-ziplist-entries、hash-max-ziplist-value、zset-max-ziplist-entries、zset-max-ziplist-value 配置较大的非默认值时,发生整数在堆缓冲区溢出问题 [由 sundb 报告]。
- (CVE-2021-32627) Integer to heap buffer overflow issue with streams, when configuring a non-default, large value for proto-max-bulk-len and client-query-buffer-limit [reported by sundb].
(CVE-2021-32627) 当为 proto-max-bulk-len 和 client-query-buffer-limit 配置非默认的大值时,流(streams)会发生整数在堆缓冲区溢出问题 [由 sundb 报告]。
- (CVE-2021-32626) Specially crafted Lua scripts may result with Heap buffer overflow [reported by Meir Shpilraien].
(CVE-2021-32626) 特制的 Lua 脚本可能会导致堆缓冲区溢出 [由 Meir Shpilraien 报告]。
Bug fixes that involve behavior changes(涉及行为更改的错误修复):
- GEO* STORE with empty source key deletes the destination key and return 0 (#9271)
GEO* STORE 与空源键删除目标键并返回 0 (#9271)
Previously it would have returned an empty array like the non-STORE variant.以前它会像非 STORE 变体一样返回一个空数组。
- PUBSUB NUMPAT replies with number of patterns rather than number of subscriptions (#9209)
PUBSUB NUMPAT 回复模式数量而不是订阅数量 (#9209)
This actually changed in 6.2.0 but was overlooked and omitted from the release notes.这实际上在 6.2.0 中发生了变化,但在发行说明中被忽略和省略。
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- Fix CLIENT PAUSE, used an old timeout from previous PAUSE (#9477)
修复客户端暂停,使用之前暂停的旧超时 (#9477)
- Fix CLIENT PAUSE in a replica would mess the replication offset (#9448)
修复副本中的客户端暂停会弄乱复制偏移量 (#9448)
- Add some missing error statistics in INFO errorstats (#9328)
添加一些缺失的错误 INFO errorstats 中的统计信息 (#9328)
Other bug fixes(其它错误修复):
- Fix incorrect reply of COMMAND command key positions for MIGRATE command (#9455)
修复 MIGRATE 命令的 COMMAND 命令键位置的错误回复 (#9455)
- Fix appendfsync to always guarantee fsync before reply, on MacOS and FreeBSD (kqueue) (#9416)
修复在 MacOS 和 FreeBSD (kqueue) 中的 appendfsync 以始终保证回复前的 fsync (#9416)
- Fix the wrong mis-detection of sync_file_range system call, affecting performance (#9371)
修复 sync_file_range 的错误检测系统调用,影响性能 (#9371)
CLI tools(CLI 工具):
- When redis-cli received ASK response, it didn’t handle it (#8930)
当 redis-cli 收到 ASK 响应时,它没有处理它 (#8930)
Improvements(改进):
- Add latency monitor sample when key is deleted via lazy expire (#9317)
在通过延迟过期删除密钥时添加延迟监视器示例(#9317)
- Sanitize corrupt payload improvements (#9321, #9399)
清理损坏的负载改进(#9321、#9399)
- Delete empty keys when loading RDB file or handling a RESTORE command (#9297, #9349)
在加载 RDB 文件或处理 RESTORE 命令时删除空密钥(#9297、#9349)
Redis 6.2.5 Released Wed Jul 21 16:32:19 IDT 2021(Redis 6.2.5 于 2021 年 7 月 21 日 星期三 16:32:19 IDT 发布)
Upgrade urgency: SECURITY, contains fixes to security issues that affect authenticated client connections on 32-bit versions. MODERATE otherwise.
升级紧迫性
:安全,包含对影响 32 位版本上经过身份验证的客户端连接的安全问题的修复。否则 中等。
Fix integer overflow in BITFIELD on 32-bit versions (CVE-2021-32761):修复 32 位版本上 BITFIELD 中的整数溢出 (CVE-2021-32761)
An integer overflow bug in Redis version 2.2 or newer can be exploited using the BITFIELD command to corrupt the heap and potentially result with remote code execution.
可以使用 BITFIELD 命令利用 Redis 2.2 版或更高版本中的整数溢出错误来破坏堆,并可能导致远程代码执行。
Bug fixes that involve behavior changes(涉及行为更改的错误修复):
- Change reply type for ZPOPMAX/MIN with count in RESP3 to nested array (#8981).
将 RESP3 中带有计数的 ZPOPMAX/MIN 的回复类型更改为嵌套数组 (#8981)。
Was using a flat array like in RESP2 instead of a nested array like ZRANGE does.使用像 RESP2 中的平面数组而不是像 ZRANGE 那样的嵌套数组。
- Fix reply type for HRANDFIELD and ZRANDMEMBER when key is missing (#9178).
修复缺少密钥时 HRANDFIELD 和 ZRANDMEMBER 的回复类型 (#9178)。
Was using a null array instead of an empty array.使用空数组而不是空数组。
- Fix reply type for ZRANGESTORE when source key is missing (#9089).
修复缺少源键时 ZRANGESTORE 的回复类型 (#9089)。
Was using an empty array like ZRANGE instead of 0 (used in the STORE variant).使用像 ZRANGE 这样的空数组而不是 0(在 STORE 变体中使用)。
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- ZRANDMEMBER WITHSCORES with negative COUNT may return bad score (#9162)
ZRANDMEMBER WITHSCORES 具有负数可能会返回错误分数(#9162)
- Fix crash after CLIENT UNPAUSE when threaded I/O config is enabled (#9041)
修复启用线程 I/O 配置时客户端取消暂停后的崩溃(#9041)
- Fix XTRIM or XADD with LIMIT may delete more entries than the limit (#9048)
修复 XTRIM 或 XADD 使用 LIMIT 可能会删除超过限制的条目 (#9048)
- Fix build issue with OpenSSL 1.1.0 (#9233)
修复 OpenSSL 1.1.0 的构建问题 (#9233)
Other bug fixes(其它错误修复):
- Fail EXEC command in case a watched key is expired (#9194)
EXEC 命令失败,以防监视的密钥过期(#9194)
- Fix SMOVE not to invalidate dest key (WATCH and tracking) when member already exists (#9244)
修复 SMOVE 在成员已存在时不会使目标密钥(WATCH 和跟踪)无效(#9244)
- Fix SINTERSTORE not to delete dest key when getting a wrong type error (#9032)
修复 SINTERSTORE 在获取时不删除目标密钥错误类型错误 (#9032)
- Fix overflows on 32-bit versions in GETBIT, SETBIT, BITCOUNT, BITPOS, and BITFIELD (#9191)
修复 32 位版本中 GETBIT、SETBIT、BITCOUNT、BITPOS 和 BITFIELD 的溢出问题 (#9191)
- Improve MEMORY USAGE on stream keys (#9164)
改进流键上的 MEMORY USAGE (#9164)
- Set TCP keepalive on inbound cluster bus connections (#9230)
在入站集群总线上设置 TCP keepalive(存活) 连接(#9230)
- Fix diskless replica loading to recover from RDB short read on module AUX data (#9199)
修复无盘副本加载以从模块 AUX 数据上的 RDB 短读取中恢复(#9199)
- Fix race in client side tracking (#9116)
修复客户端跟踪中的竞争(#9116)
- Fix ziplist length updates on big-endian platforms (#2080)
修复 big-endian 平台上的 ziplist 长度更新(#2080)
CLI tools(CLI 工具):
- redis-cli cluster import command may issue wrong MIGRATE command, sending COPY instead of REPLACE (#8945)
redis-cli cluster import 命令可能会发出错误的 MIGRATE 命令,发送 COPY 而不是 REPLACE (#8945)
- redis-cli --rdb fixes when using “-” to write to stdout (#9136, #9135)
redis-cli --rdb 修复了使用“-”写入标准输出时的问题(#9136、#9135)
- redis-cli support for RESP3 set type in CSV and RAW output (#7338)
redis-cli 支持 CSV 和 RAW 输出中的 RESP3 集类型 (#7338)
Modules(模块):
- Module API for getting current command name (#8792)
用于获取当前命令名称的模块 API (#8792)
- Fix RM_StringTruncate when newlen is 0 (#3718)
修复当 newlen 为 0 时的 RM_StringTruncate (#3718)
- Fix CLIENT UNBLOCK crashing modules without timeout callback (#9167)
修复没有超时回调的 CLIENT UNBLOCK 崩溃模块 (#9167)
Redis 6.2.4 Released Tue June 1 12:00:00 IST 2021(Redis 6.2.4 于 2021 年 6 月 1 日 星期二 12:00:00 IST 发布)
Upgrade urgency: SECURITY, Contains fixes to security issues that affect authenticated client connections. MODERATE otherwise.
升级紧迫性
:安全,包含对影响经过身份验证的客户端连接的安全问题的修复。否则 中等。
Fix integer overflow in STRALGO LCS (CVE-2021-32625):修复 STRALGO LCS 中的整数溢出 (CVE-2021-32625)
An integer overflow bug in Redis version 6.0 or newer can be exploited using the STRALGO LCS command to corrupt the heap and potentially result with remote code execution. This is a result of an incomplete fix by CVE-2021-29477.
可以使用 STRALGO LCS 命令利用 Redis 6.0 或更高版本中的整数溢出错误来破坏堆并可能导致远程代码执行。这是 CVE-2021-29477 修复不完整的结果。
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- Fix crash after a diskless replication fork child is terminated (#8991)
修复无盘复制分叉子进程终止后的崩溃 (#8991)
- Fix redis-benchmark crash on unsupported configs (#8916)
修复 redis-benchmark 在不支持的配置上崩溃 (#8916)
Other bug fixes(其它 bug 修复):
- Fix crash in UNLINK on a stream key with deleted consumer groups (#8932)
修复删除消费者组的流键上的 UNLIN文章来源站点https://www.yii666.com/K 崩溃(#8932)
- SINTERSTORE: Add missing keyspace del event when none of the sources exist (#8949)
SINTERSTORE:当不存在任何源时添加丢失的键空间(keyspace)删除事件(#8949)
- Sentinel: Fix CONFIG SET of empty string sentinel-user/sentinel-pass configs (#8958)
Sentinel(哨兵):修复 sentinel-user/sentinel-pass 配置的 CONFIG SET 的空字符串 (#8958)
- Enforce client output buffer soft limit when no traffic (#8833)
在没有流量时强制客户端输出缓冲区软限制 (#8833)
Improvements(改进):
- Hide AUTH passwords in MIGRATE command from slowlog (#8859)
在 slowlog 的 MIGRATE 命令中隐藏 AUTH 密码 (#8859)
Redis 6.2.3 Released Mon May 3 19:00:00 IST 2021(Redis 6.2.3 于 2021 年 5 月 3 日 星期一 19:00:00 IST 发布)
Upgrade urgency: SECURITY, Contains fixes to security issues that affect authenticated client connections. LOW otherwise.
升级紧迫性
:安全,包含对影响经过身份验证的客户端连接的安全问题的修复。否则 低。
Integer overflow in STRALGO LCS command (CVE-2021-29477):STRALGO LCS 命令中的整数溢出 (CVE-2021-29477)
An integer overflow bug in Redis version 6.0 or newer could be exploited using the STRALGO LCS command to corrupt the heap and potentially result in remote code execution. The integer overflow bug exists in all versions of Redis starting with 6.0.
Redis 6.0 或更高版本中的整数溢出错误可被利用,使用 STRALGO LCS 命令破坏堆并可能导致远程代码执行。 Redis 6.0 开始的所有版本都存在整数溢出 bug。
Integer overflow in COPY command for large intsets (CVE-2021-29478):大型 intset 的 COPY 命令中的整数溢出 (CVE-2021-29478)
An integer overflow bug in Redis 6.2 could be exploited to corrupt the heap and potentially result with remote code execution. The vulnerability involves changing the default set-max-intset-entries configuration value, creating a large set key that consists of integer values and using the COPY command to duplicate it. The integer overflow bug exists in all versions of Redis starting with 2.6, where it could result with a corrupted RDB or DUMP payload, but not exploited through COPY (which did not exist before 6.2).
Redis 6.2 中的整数溢出错误可被利用来破坏堆并可能导致远程代码执行。该漏洞涉及更改默认的 set-max-intset-entries 配置值,创建一个由整数值组成的大集合键并使用 COPY 命令复制它。整数溢出错误存在于从 2.6 开始的所有 Redis 版本中,它可能导致损坏的 RDB 或 DUMP 负载,但无法通过 COPY(在 6.2 之前不存在)利用。
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- Fix memory leak in moduleDefragGlobals (#8853)
修复 moduleDefragGlobals 中的内存泄漏 (#8853)
- Fix memory leak when doing lazy freeing client tracking table (#8822)
修复延迟释放客户端跟踪表时的内存泄漏 (#8822)
- Block abusive replicas from sending command that could assert and crash redis (#8868)
阻止滥用副本发送可能断言和崩溃 redis 的命令 (#8868)
Other bug fixes(其它错误修复):
- Use a monotonic clock to check for Lua script timeout (#8812)
使用单调时钟检查 Lua 脚本超时 (#8812)
- redis-cli: Do not use unix socket when we got redirected in cluster mode (#8870)
redis-cli:在集群模式下重定向时不使用 unix 套接字 (#8870)
Modules(模块):
- Fix RM_GetClusterNodeInfo() to correctly populate master id (#8846)
修复 RM_GetClusterNodeInfo() 以正确填充主 ID (#8846)
Redis 6.2.2 Released Mon April 19 19:00:00 IST 2021(Redis 6.2.2 于 2021 年 4 月 19 日 星期一 19:00:00 IST 发布)
Upgrade urgency: HIGH, if you’re using ACL and pub/sub, CONFIG REWRITE, or suffering from performance regression. see below.
升级紧迫性
:高,如果您正在使用 ACL 和发布/订阅、CONFIG REWRITE,或者遭受性能回归的困扰。见下文。
Bug fixes for regressions in previous releases of Redis 6.2(Redis 6.2 之前版本中的回归错误修复):
- Fix BGSAVE, AOFRW, and replication slowdown due to child reporting CoW (#8645)
修复 BGSAVE、AOFRW 和复制速度由于子报告 CoW 而变慢(#8645)
- Fix short busy loop when timer event is about to fire (#8764)
修复计时器事件即将触发时的短忙循环(#8764)
- Fix default user, overwritten and reset users losing pubsub channel permissions (#8723)
修复默认用户,覆盖和重置失去 pubsub 通道权限的用户(#8723)
- Fix config rewrite with an empty
save
config resulsing in defaultsave
values (#8719)修复配置重写为空的 save 配置导致默认的 save 值(#8719)
- Fix not starting on alpine/libmusl without IPv6 (#8655)
修复没有在没有 IPv6 的情况下在 alpine/libmusl 上启动(#8655)
- Fix issues with propagation and MULTI/EXEC in modules (#8617)
修复模块中传播和 MULTI/EXEC 的问题 (#8617)
Several issues around nested calls and thread safe contexts关于嵌套调用和线程安全上下文的几个问题
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- ACL Pub/Sub channels permission handling for save/load scenario (#8794)
保存/加载场景的 ACL 发布/订阅通道权限处理(#8794)
- Fix early rejection of PUBLISH inside MULTI-EXEC transaction (#8534)
修复 MULTI-EXEC 事务中 PUBLISH 的早期拒绝(#8534)
- Fix missing SLOWLOG records for blocked commands (#8632)
修复丢失的 SLOWLOG 记录对于被阻止的命令 (#8632)
- Allow RESET command during busy scripts (#8629)
在繁忙的脚本中允许 RESET 命令 (#8629)
- Fix some error replies were not counted on stats (#8659)
修复一些错误回复不计入统计信息 (#8659)
Bug fixes(错误修复):
- Add a timeout mechanism for replicas stuck in fullsync (#8762)
为卡在全同步中的副本添加超时机制(#8762)
- Process HELLO command even if the default user has no permissions (#8633)
即使默认用户没有权限也处理 HELLO 命令(#8633)
- Client issuing a long running script and using a pipeline, got disconnected (#8715)
客户端发出长时间运行的脚本并使用管道,断开连接(#8715 )
- Fix script kill to work also on scripts that use
pcall
(#8661)修复 script kill 也可以在使用 pcall 的脚本上工作 (#8661)
- Fix list-compress-depth may compress more node than required (#8311)
修复 list-compress-depth 可能会压缩比所需更多的节点 (#8311)
- Fix redis-cli handling of rediss:// URL scheme (#8705)
修复 redis-cli 对 rediss:// URL 方案的处理 ( #8705)
- Cluster: Skip unnecessary check which may prevent failure detection (#8585)
Cluster(集群):跳过不必要的检查,这可能会阻止故障检测(#8585)
- Cluster: Fix hang manual failover when replica just started (#8651)
Cluster(集群):修复副本刚文章来源地址https://www.yii666.com/blog/12891.html启动时挂起的手动故障转移(#8651)
- Sentinel: Fix info-refresh time field before sentinel get first response (#8567)
Sentinel(哨兵):修复哨兵获得第一个响应之前的信息刷新时间字段(#8567 )
- Sentinel: Fix possible crash on failed connection attempt (#8627)
Sentinel(哨兵):修复连接尝试失败时可能发生的崩溃 (#8627)
- Systemd: Send the readiness notification when a replica is ready to accept connections (#8409)
Systemd:当副本准备好接受连接时发送就绪通知 (#8409)
Command behavior changes(命令行为更改):
- ZADD: fix wrong reply when INCR used with GT/LT which blocked the update (#8717)
ZADD:修复当 INCR 与阻止更新的 GT/LT 一起使用时的错误回复(#8717)
It was responding with the incremented value rather than nil它使用增量值而不是 nil 进行响应
- XAUTOCLAIM: fix response to return the next available id as the cursor (#8725)
XAUTOCLAIM:修复响应以返回下一个可用 ID 作为光标( #8725)
Previous behavior was retuning the last one which was already scanned之前的行为是重新调整已扫描的最后一个
- XAUTOCLAIM: fix JUSTID to prevent incrementing delivery_count (#8724)
XAUTOCLAIM:修复 JUSTID 以防止递增 delivery_count(#8724)
New config options(新配置选项):
- Add cluster-allow-replica-migration config option (#5285)
添加 cluster-allow-replica-migration 配置选项 (#5285)
- Add replica-announced config option (#8653)
添加 replica-announced 配置选项 (#8653)
- Add support for plaintext clients in TLS cluster (#8587)
添加对 TLS 集群中明文客户端的支持 (#8587)
- Add support for reading encrypted keyfiles (#8644)
添加对读取加密密钥文件的支持(#8644)
Improvements(改进):
- Fix performance regression in BRPOP on Redis 6.0 (#8689)
修复 Redis 6.0 上 BRPOP 中的性能回归(#8689)
- Avoid adding slowlog entries for config with sensitive data (#8584)
避免为具有敏感数据的配置添加慢日志条目(#8584)
- Improve redis-cli non-binary safe string handling (#8566)
改进 redis-cli 非二进制安全字符串处理(#8566)
- Optimize CLUSTER SLOTS reply (#8541)
优化 CLUSTER SLOTS 回复(#8541)
- Handle remaining fsync errors (#8419)
处理剩余的 fsync 错误 (#8419)
Info fields and introspection changes(信息字段和内省更改):
- Strip % sign from current_fork_perc info field (#8628)
从 current_fork_perc 信息字段中删除 % 符号 (#8628)
- Fix RSS memory info on FreeBSD (#8620)
修复 FreeBSD 上的 RSS 内存信息 (#8620)
- Fix client_recent_max_input/output_buffer in ‘INFO CLIENTS’ when all clients drop (#8588)
修复所有客户端丢失时“INFO CLIENTS”中的 client_recent_max_input/output_buffer (#8588)
- Fix invalid master_link_down_since_seconds in info replication (#8785)
修复无效信息复制中的 master_link_down_since_seconds (#8785)
Platform and deployment-related changes(平台和部署相关的更改):
- Fix FreeBSD <12.x builds (#8603)
修复 FreeBSD < 12.x 构建 (#8603)
Modules(模块):
- Add macros for RedisModule_log logging levels (#4246)
为 RedisModule_log 日志记录级别添加宏(#4246)
- Add RedisModule_GetAbsExpire / RedisModule_SetAbsExpire (#8564)
添加 RedisModule_GetAbsExpire / RedisModule_SetAbsExpire(#8564)
- Add a module type for key space notification (#8759)
为密钥空间通知添加模块类型(#8759)
- Set module eviction context flag only in masters (#8631)
仅在 master 中设置模块逐出上下文标志(#8631)
- Fix unusable RedisModule_IsAOFClient API (#8596)
修复不可用的 RedisModule_IsAOFClient API (#8596)
- Fix missing EXEC on modules propagation after failed EVAL execution (#8654)
修复 EVAL 执行失败后模块传播中缺少的 EXEC (#8654)
- Fix edge-case when a module client is unblocked (#8618)
修复模块客户端解锁时的边缘情况 (#8618)
Redis 6.2.1 Released Mon Mar 1 17:51:36 IST 2021(Redis 6.2.1 于 2021 年 3 月 1 日 星期一 17:51:36 IST 发布)
Upgrade urgency: LOW.
升级紧迫性
:低。
Here is a comprehensive list of changes in this release compared to 6.2.0, each one includes the PR number that added it, so you can get more details at https://github.com/redis/redis/pull/<number>这是此版本与 6.2.0 相比的完整更改列表,每个更改都包含添加它的 PR 编号,因此您可以在 https://github.com/redis/redis/pull/<number> 获得更多详细信息
Bug fixes(错误修复):
- Fix sanitize-dump-payload for stream with deleted records (#8568)
修复带有已删除记录的流的 sanitize-dump-payload (#8568)
- Prevent client-query-buffer-limit config from being set to lower than 1mb (#8557)
防止 client-query-buffer-limit 配置设置为低于 1mb (#8557)
Improvements(改进):
- Make port, tls-port and bind config options modifiable at runtime (#8510)
使端口、tls-port 和绑定配置选项在运行时可修改 (#8510)
Platform and deployment-related changes(与平台和部署相关的更改):
- Fix compilation error on non-glibc systems if jemalloc is not used (#8533)
如果不使用 jemalloc,则修复非 glibc 系统上的编译错误 (#8533)
- Improved memory consumption and memory usage tracking on FreeBSD (#8545)
改进 FreeBSD 上的内存消耗和内存使用跟踪 (#8545)
- Fix compilation on ARM64 MacOS with jemalloc (#8458)
修复使用 jemalloc 在 ARM64 MacOS 上的编译 (#8458)
Modules(模块):
- New Module API for getting user name of a client (#8508)
用于获取客户端用户名的新模块 API (#8508)
- Optimize RM_Call by utilizing a shared reusable client (#8516)
通过使用共享的可重用客户端优化 RM_Call (#8516)
- Fix crash running CLIENT INFO via RM_Call (#8560)
修复通过 RM_Call 运行 CLIENT INFO 的崩溃 (#8560)
Redis 6.2.0 GA Released Tue Feb 22 14:00:00 IST 2021(Redis 6.2.0 GA 于 2021 年 2 月 22 日 星期二 14:00:00 IST 发布)
Upgrade urgency: SECURITY if you use 32bit build of redis (see bellow), MODERATE if you used earlier versions of Redis 6.2, LOW otherwise.
升级紧迫性
:如果您使用 32 位版本的 Redis(见下文),则为安全;如果您使用 Redis 6.2 的早期版本,则为中等;否则为低。
Integer overflow on 32-bit systems (CVE-2021-21309):32 位系统上的整数溢出 (CVE-2021-21309)
Redis 4.0 or newer uses a configurable limit for the maximum supported bulk input size. By default, it is 512MB which is a safe value for all platforms. If the limit is significantly increased, receiving a large request from a client may trigger several integer overflow scenarios, which would result with buffer overflow and heap corruption.
Redis 4.0 或更高版本对支持的最大批量输入大小使用可配置限制。默认情况下,它是 512MB,这是所有平台的安全值。如果限制显着增加,从客户端接收大请求可能会触发多个整数溢出场景,这将导致缓冲区溢出和堆损坏。
Here is a comprehensive list of changes in this release compared to 6.2 RC3, each one includes the PR number that added it, so you can get more details at https://github.com/redis/redis/pull/<number>
这是与 6.2 RC3 相比此版本的完整更改列表,每个更改都包含添加它的 PR 编号,因此您可以在 https://github.com/redis/redis/pull/<number> 获得更多详细信息
Bug fixes(错误修复):
- Avoid 32-bit overflows when proto-max-bulk-len is set high (#8522)
当 proto-max-bulk-len 设置为高时避免 32 位溢出(#8522)
- Fix broken protocol in client tracking tracking-redir-broken message (#8456)
修复客户端跟踪 tracking-redir-broken 消息中损坏的协议(#8456)
- Avoid unsafe field name characters in INFO commandstats, errorstats, modules (#8492)
避免 INFO commandstats,errorstats, modules 中的不安全字段名称字符 (#8492)
- XINFO able to access expired keys during CLIENT PAUSE WRITE (#8436)
XINFO 能够在 CLIENT PAUSE WRITE 期间访问过期密钥 (#8436)
- Fix allowed length for REPLCONF ip-address, needed due to Sentinel’s support for hostnames (#8517)
修复 REPLCONF ip-address 的允许长度,由于 Sentinel 支持主机名 (#8517)
- Fix broken protocol in redis-benchmark when used with -a or --dbnum (#8486)
修复 redis 中损坏的协议-benchmark 与 -a 或 --dbnum 一起使用时 (#8486)
- XADD counts deleted records too when considering switching to a new listpack (#8390)
XADD 在考虑切换到新列表包时也会计算已删除的记录 (#8390)
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- Fixes in GEOSEARCH bybox (accuracy and mismatch between width and height) (#8445)
GEOSEARCH bybox 中的修复(精度和宽度和高度之间的不匹配)(#8445)
- Fix risk of OOM panic in HRANDFIELD, ZRANDMEMBER commands with huge negative count (#8429)
修复 HRANDFIELD 和 ZRANDMEMBER 命令中 OOM 恐慌的风险,具有巨大的负计数(#8429)
- Fix duplicate replicas issue in Sentinel, needed due to hostname support (#8481)
修复 Sentinel 中的重复副本问题,由于主机名支持 (#8481)
- Fix Sentinel configuration rewrite, an improvement of #8271 (#8480)
修复 Sentinel 配置重写,这是对 #8271 的改进 (#8480)
Command behavior changes(命令行为更改):
- SRANDMEMBER uses RESP3 array type instead of set type (#8504)
SRANDMEMBER 使用 RESP3 数组类型而不是集合类型 (#8504)
- EXPIRE, EXPIREAT, SETEX, GETEX: Return error when provided expire time overflows (#8287)
EXPIRE、EXPIREAT、SETEX、GETEX:提供的到期时间溢出时返回错误 (#8287)
Other behavior changes(其它行为更改):
- Remove ACL subcommand validation if fully added command exists. (#8483)
如果存在完全添加的命令,则删除 ACL 子命令验证。 (#8483)
Improvements(改进):
- Optimize sorting in GEORADIUS / GEOSEARCH with COUNT (#8326)
使用 COUNT 优化 GEORADIUS / GEOSEARCH 中的排序 (#8326)
- Optimize HRANDFIELD and ZRANDMEMBER case 4 when ziplist encoded (#8444)
优化 HRANDFIELD 和 ZRANDMEMBER case 4 when ziplist encoded (#8444)
- Optimize in-place replacement of elements in HSET, HINCRBY, LSET (#8493)
优化 HSET、HINCRBY、LSET 中元素的就地替换 (#8493)
- Remove redundant list to store pubsub patterns (#8472)
删除冗余存储 pubsub 模式的列表 (#8472)
- Add --insecure option to command line tools (#8416)
添加 --insecure 选项到命令行工具 (#8416)
Info fields and introspection changes(信息字段和内省更改):
- Add INFO fields to track progress of BGSAVE, AOFRW, replication (#8414)
添加信息字段以跟踪 BGSAVE、AOFRW、复制的进度(#8414)
Modules(模块):
- RM_ZsetRem: Delete key if empty, the bug could leave empty zset keys (#8453)
RM_ZsetRem:删除键如果为空,错误可能会留下空的 zset 键(#8453)
- RM_HashSet: Add COUNT_ALL flag and set errno (#8446)
RM_HashSet:添加 COUNT_ALL 标志并设置错误号(#8446)
Redis 6.2 RC3 Released Tue Feb 1 14:00:00 IST 2021
Upgrade urgency LOW: This is the third Release Candidate of Redis 6.2.
升级紧迫性低
:这是 Redis 6.2 的第三个候选版本。
Here is a comprehensive list of changes in this release compared to 6.2 RC2, each one includes the PR number that added it, so you can get more details at https://github.com/redis/redis/pull/<number>这是与 6.2 RC2 相比此版本的完整更改列表,每个更改都包含添加它的 PR 编号,因此您可以在 https://github.com/redis/redis/pull/<number> 获得更多详细信息
New commands / args(新命令/参数):
- Add HRANDFIELD and ZRANDMEMBER commands (#8297)
添加 HRANDFIELD 和 ZRANDMEMBER 命令 (#8297)
- Add FAILOVER command (#8315)
添加 FAILOVER 命令 (#8315)
- Add GETEX, GETDEL commands (#8327)
添加 GETEX、GETDEL 命令 (#8327)
- Add PXAT/EXAT arguments to SET command (#8327)
添加 PXAT/EXAT 参数到 SET 命令 (#8327)
- Add SYNC arg to FLUSHALL and FLUSHDB, and ASYNC/SYNC arg to SCRIPT FLUSH (#8258)
添加 SYNC arg到 FLUSHALL 和 FLUSHDB,以及 ASYNC/SYNC arg 到 SCRIPT FLUSH (#8258)
Sentinel(哨兵):
- Add hostname support to Sentinel (#8282)
向 Sentinel 添加主机名支持 (#8282)
- Prevent file descriptors from leaking into Sentinel scripts (#8242)
防止文件描述符泄漏到 Sentinel 脚本中 (#8242)
- Fix config file line order dependency and config rewrite sequence (#8271)
修复配置文件行顺序依赖性和配置重写顺序 (#8271)
New configuration options(新的配置选项):
- Add set-proc-title config option to disable changes to the process title (#3623)
添加 set-proc-title 配置选项以禁用对进程标题的更改 (#3623)
- Add proc-title-template option to control what’s shown in the process title (#8397)
添加 proc-title-template 选项以控制进程标题中显示的内容 (#8397)
- Add lazyfree-lazy-user-flush config option to control FLUSHALL, FLUSHDB and SCRIPT FLUSH (#8258)
添加 lazyfree-lazy-用于控制 FLUSHALL、FLUSHDB 和 SCRIPT FLUSH 的 user-flush 配置选项 (#8258)
Bug fixes(错误修复):
- AOF: recover from last write error by turning on/off appendonly config (#8030)
AOF:通过打开/关闭 appendonly 配置从上次写入错误中恢复(#8030)
- Exit on fsync error when the AOF fsync policy is ‘always’ (#8347)
当 AOF fsync 策略为“始终”时,出现 fsync 错误时退出(#8347)
- Avoid assertions (on older kernels) when testing arm64 CoW bug (#8405)
测试时避免断言(在旧内核上) arm64 CoW 错误 (#8405)
- CONFIG REWRITE should honor umask settings (#8371)
CONFIG REWRITE 应该遵循 umask 设置 (#8371)
- Fix firstkey,lastkey,step in COMMAND command for some commands (#8367)
修复某些命令的 COMMAND 命令中的 firstkey、lastkey、step (#8367)
Special considerations(特别注意事项):
- Fix misleading description of the save configuration directive (#8337)
修复保存配置指令的误导性描述(#8337)
Improvements(改进):
- A way to get RDB file via replication without excessive replication buffers (#8303)
一种无需过多复制缓冲区即可通过复制获取 RDB 文件的方法 (#8303)
- Optimize performance of clusterGenNodesDescription for large clusters (#8182)
优化大型集群的 clusterGenNodesDescription 性能 (#8182)
Info fields and introspection changes(信息字段和内省更改):
- SLOWLOG and LATENCY monitor include unblocking time of blocked commands (#7491)
SLOWLOG 和 LATENCY 监视器包括阻塞命令的解锁时间 (#7491)
Modules(模块):
- Add modules API for streams (#8288)
为流添加模块 API (#8288)
- Add event for fork child birth and termination (#8289)
添加 fork child 出生和终止事件 (#8289)
- Add RM_BlockedClientMeasureTime* etc, to track background processing in commandstats (#7491)
添加 RM_BlockedClientMeasureTime* 等,以跟踪 commandstats 中的后台处理 (#7491)
- Fix bug in v6.2, wrong value passed to the new unlink callback (#8381)
修复 v6.2 中的错误,错误值传递给新的取消链接回调 (#8381)
- Fix bug in v6.2, modules blocked on keys unblock on commands like LPUSH (#8356)
修复 v6.2 中的错误,模块在键上阻塞在 LPUSH 等命令上解锁 (#8356)
Redis 6.2 RC2 Released Tue Jan 12 16:17:20 IST 2021(Redis 6.2 RC2 于 2021 年 1 月 12 日 星期二 16:17:20 IST 发布)
Upgrade urgency LOW: This is the second Release Candidate of Redis 6.2.
升级紧迫性低
:这是 Redis 6.2 的第二个候选版本。
IMPORTANT: If you’re running Redis on ARM64 or a big-endian system, upgrade may have significant implications. Please be sure to read the notes below.重要提示
:如果您在 ARM64 或大端系统上运行 Redis,升级可能会产生重大影响。请务必阅读以下注意事项。
Here is a comprehensive list of changes in this release compared to 6.2 RC1, each one includes the PR number that added it, so you can get more details at https://github.com/redis/redis/pull/<number>这是与 6.2 RC1 相比此版本的完整更改列表,每个更改都包含添加它的 PR 编号,因此您可以在 https://github.com/redis/redis/pull/<number> 获得更多详细信息
New commands / args(新命令/参数):
- Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command (#7844)
将 REV、BYLEX 和 BYSCORE 参数添加到 ZRANGE,以及 ZRANGESTORE 命令(#7844)
- Add the XAUTOCLAIM command (#7973)
添加 XAUTOCLAIM 命令(#7973)
- Add the MINID trimming strategy and the LIMIT argument to XADD and XTRIM (#8169)
添加 MINID 修剪策略和 LIMIT 参数到 XADD 和 XTRIM(#8169)
- Add the ANY argument to GEOSEARCH and GEORADIUS (#8259)
将 ANY 参数添加到 GEOSEARCH 和 GEORADIUS (#8259)
- Add the CH, NX, XX arguments to GEOADD (#8227)
将 CH、NX、XX 参数添加到 GEOADD (#8227)
- Add the COUNT argument to LPOP and RPOP (#8179)
将 COUNT 参数添加到 LPOP 和 RPOP (#8179)
- Add the WRITE argument to CLIENT PAUSE for pausing write commands exclusively (#8170)
将 WRITE 参数添加到 CLIENT PAUSE 用于专门暂停写入命令(#8170)
- Change the proto-ver argument of HELLO to optional (#7377)
将 HELLO 的 proto-ver 参数更改为可选(#7377)
- Add the CLIENT TRACKINGINFO subcommand (#7309)
添加 CLIENT TRACKINGINFO 子命令(#7309)
Command behavior changes(命令行为更改):
- CLIENT TRACKING yields an error when given overlapping BCAST prefixes (#8176)
当给定重叠的 BCAST 前缀时,CLIENT TRACKING 会产生错误(#8176)
- SWAPDB invalidates WATCHed keys (#8239)
SWAPDB 使 WATCHed 键无效(#8239)
- SORT command behaves differently when used on a writable replica (#8283)
SORT 命令在可写副本上使用时表现不同(#8283)
Other behavior changes(其它行为更改):
- Avoid propagating MULTI/EXEC for read-only transactions (#8216)
避免为只读事务传播 MULTI/EXEC (#8216)
- Remove the read-only flag from TIME, ECHO, ROLE, LASTSAVE (#8216)
从 TIME、ECHO、ROLE、LASTSAVE 中删除只读标志 (#8216)
- Fix the command flags of PFDEBUG (#8222)
修复 PFDEBUG 的命令标志 (#8222)
- Tracking clients will no longer receive unnecessary key invalidation messages after FLUSHDB (#8039)
跟踪客户端在 FLUSHDB 之后将不再收到不必要的密钥失效消息 (#8039)
- Sentinel: Fix missing updates to the config file after SENTINEL SET command (#8229)
Sentinel(哨兵):修复 SENTINEL SET 命令后配置文件丢失的更新 (#8229)
Bug fixes with compatibility implications (bugs introduced in Redis 6.0)(具有兼容性影响的错误修复(Redis 6.0 中引入的错误)):
- Fix RDB CRC64 checksum on big-endian systems (#8270)
修复大端系统上的 RDB CRC64 校验和 (#8270)
If you’re using big-endian please consider the compatibility implications with RESTORE, replication and persistence.如果您正在使用大端,请考虑 RESTORE、复制和持久性的兼容性影响。
- Fix wrong order of key/value in Lua’s map response (#8266)
修复 Lua 映射响应中键/值的错误顺序 (#8266)
If your scripts use redis.setresp() or return a map (new in Redis 6.0), please consider the implications.如果您的脚本使用 redis.setresp() 或返回映射(Redis 6.0 中的新功能),请考虑其含义。
Bug fixes that are only applicable to previous releases of Redis 6.2(仅适用于以前版本的 Redis 6.2 的错误修复):
- Resolve rare assertions in active defragmentation while loading (#8284, #8281)
解决加载时主动碎片整理中的罕见断言(#8284、#8281)
Bug fixes(错误修复):
- Fix the selection of a random element from large hash tables (#8133)
修复从大型哈希表中选择随机元素 (#8133)
- Fix an issue where a forked process deletes the parent’s pidfile (#8231)
修复分叉进程删除父进程的 pid 文件的问题 (#8231)
- Fix crashes when enabling io-threads-do-reads (#8230)
修复启用 io-threads-do-reads 时的崩溃 (#8230)
- Fix a crash in redis-cli after executing cluster backup (#8267)
修复执行集群备份后 redis-cli 崩溃 (#8267)
- Fix redis-benchmark to use an IP address for the first cluster node (#8154)
修复 redis-benchmark 为第一个集群节点使用 IP 地址 (#8154)
- Fix saving of strings larger than 2GB into RDB files (#8306)
修复将大于 2GB 的字符串保存到 RDB 文件中 (#8306)
Additional improvements(其它改进):
- Improve replication handshake time (#8214)
改进复制握手时间 (#8214)
- Release client tracking table memory asynchronously in cases where the DB is also freed asynchronously (#8039)
在数据库也被异步释放的情况下,异步释放客户端跟踪表内存 (#8039)
- Avoid wasteful transient memory allocation in certain cases (#8286, #5954)
在某些情况下避免浪费瞬时内存分配 (#8286、#5954)
- Handle binary string values by the ‘requirepass’ and ‘masterauth’ configs (#8200)
处理'requirepass' 和 'masterauth' 配置的二进制字符串值 (#8200)
Platform and deployment-related changes(平台和部署相关的更改):
- Install redis-check-rdb and redis-check-aof as symlinks to redis-server (#5745)
安装 redis-check-rdb 和 redis-check-aof 作为符号链接到 redis-server (#5745)
- Add a check for an ARM64 Linux kernel bug (#8224)
添加对 ARM64 Linux 内核错误的检查 (#8224)
Due to the potential severity of this issue, Redis will refuse to run on affected platforms by default.由于潜在的严重性此问题,Redis 将默认拒绝在受影响的平台上运行。
Info fields and introspection changes(信息字段和内省更改):
- Add the errorstats section to the INFO command (#8217)
将 errorstats 部分添加到 INFO 命令 (#8217)
- Add the failed_calls and rejected_calls fields INFO’s commandstats section (#8217)
添加 failed_calls 和 rejected_calls 字段信息的 commandstats 部分 (#8217)
- Report child copy-on-write metrics continuously (#8264)
连续报告子写入时复制指标 (#8264)
Module API changes(模块 API 更改):
- Add the RedisModule_SendChildCOWInfo API (#8264)
添加 RedisModule_SendChildCOWInfo API (#8264)
- Add the may-replicate command flag (#8170)
添加 may-replicate 命令标志 (#8170)
Redis 6.2 RC1 Released Mon Dec 14 11:50:00 IST 2020(Redis 6.2 RC1 于 2020 年 12 月 14 日 星期一 11:50:00 IST 发布)
Upgrade urgency LOW: This is the first Release Candidate of Redis 6.2.
升级紧迫性低
:这是 Redis 6.2 的第一个候选版本。
Introduction to the Redis 6.2 release(Redis 6.2 版本介绍)
This release is the first significant Redis release managed by the core team under the new project governance model.此版本是核心团队在新项目治理模型下管理的第一个重要 Redis 版本。
Redis 6.2 includes many new commands and improvements, but no big features. It mainly makes Redis more complete and addresses issues that have been requested by many users frequently or for a long time.Redis 6.2 包含许多新命令和改进,但没有大的功能。主要是让Redis更加完善,解决了很多用户经常或者长时间要求的问题。
Many of these changes were not eligible for 6.0.x for several reasons:由于以下几个原因,其中许多更改不符合 6.0.x 的条件:
- They are not backward compatible, which is always the case with new or extended commands (that cannot be replicated to an older replica).
1. 它们不向后兼容,新命令或扩展命令总是如此(无法复制到旧副本)。
- They require a longer release-candidate test cycle.
2. 他们需要更长的候选发布测试周期。
Here is a comprehensive list of changes in this release compared to 6.0.9, each one includes the PR number that added it, so you can get more details at https://github.com/redis/redis/pull/<number>这是与 6.0.9 相比此版本的完整更改列表,每个更改都包含添加它的 PR 编号,因此您可以在 https://github.com/redis/redis/pull/<number> 获得更多详细信息
New commands / args(新命令/参数):
- Add SMISMEMBER command that checks multiple members (#7615)
添加检查多个成员的 SMISMEMBER 命令(#7615)
- Add ZMSCORE command that returns an array of scores (#7593)
添加返回分数数组的 ZMSCORE 命令(#7593)
- Add LMOVE and BLMOVE commands that pop and push arbitrarily (#6929)
添加任意弹出和推送的 LMOVE 和 BLMOVE 命令(#6929)
- Add RESET command that resets client connection state (#7982)
添加 RESET 命令重置客户端连接状态 (#7982)
- Add COPY command that copies keys (#7953)
添加复制密钥的 COPY 命令 (#7953)
- Add ZDIFF and ZDIFFSTORE commands (#7961)
添加 ZDIFF 和 ZDIFFSTORE 命令 (#7961)
- Add ZINTER and ZUNION commands (#7794)
添加 ZINTER 和 ZUNION 命令 (#7794)
- Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries (#8094)
添加 GEOSEARCH/GEOSEARCHSTORE 命令用于空间边界框查询(queries) (#8094)
- Add GET parameter to SET command, for more powerful GETSET (#7852)
在 SET 命令中添加 GET 参数,以获得更强大的 GETSET (#7852)
- Add exclusive range query to XPENDING (#8130)
在 XPENDING 中添加独占范围查询 (#8130)
- Add exclusive range query to X[REV]RANGE (#8072)
在 X[REV]RANGE 中添加独占范围查询 (#8072)
- Add GT and LT options to ZADD for conditional score updates (#7818)
添加 GT和 LT 选项到 ZADD 以进行条件分数更新(#7818)
- Add CLIENT INFO and CLIENT LIST for specific ids (#8113)
为特定 ID 添加 CLIENT INFO 和 CLIENT LIST(#8113)
- Add IDLE argument to XPENDING command (#7972)
向 XPENDING 命令添加 IDLE 参数(#7972)
- Add local address to CLIENT LIST, and a CLIENT KILL filter. (#7913)
将本地地址添加到 CLIENT LIST,以及一个 CLIENT KILL筛选。 (#7913)
- Add NOMKSTREAM option to XADD command (#7910)
向 XADD 命令添加 NOMKSTREAM 选项 (#7910)
- Add command introspection to Sentinel (#7940)
向 Sentinel 添加命令内省 (#7940)
- Add SENTINEL MYID subcommand (#7858)
添加 SENTINEL MYID 子命令 (#7858)
New features(新功能):
- Dump payload sanitization: prevent corrupt payload causing crashes (#7807)
转储有效负载清理:防止损坏的有效负载导致崩溃 (#7807)
Has flags to enable full O(N) validation (disabled by default).具有启用完整 O(N) 验证的标志(默认情况下禁用)。
- ACL patterns for Pub/Sub channels (#7993)
Pub/Sub 通道的 ACL 模式 (#7993)
- Support ACL for Sentinel mode (#7888)
支持 Sentinel 模式的 ACL (#7888)
- Support getting configuration from both stdin and file at the same time (#7893)
支持同时从标准输入和文件获取配置 (#7893)
Lets you avoid storing secrets on the disk.让您避免在磁盘上存储秘密。
New features in CLI tools(CLI 工具中的新功能):
- redis-cli RESP3 push support (#7609)
redis-cli RESP3 推送支持(#7609)
- redis-cli cluster import support source and target that require auth (#7994)
redis-cli 集群导入支持需要身份验证的源和目标(#7994)
- redis-cli URIs able to provide user name in addition to password (#8048)
redis-cli URI 能够提供用户名和密码(#8048)
- redis-cli/redis-benchmark allow specifying the prefered ciphers/ciphersuites (#8005)
redis-cli/redis-benchmark 允许指定首选密码/密码套件 (#8005)
- redis-cli add -e option to exit with code when command execution fails (#8136)
redis-cli 添加 -e 选项以在命令执行失败时使用代码退出 (#8136)
Command behavior changes(命令行为更改):
- EXISTS should not alter LRU (#8016)
EXISTS 不应更改 LRU (#8016)
In Redis 5.0 and 6.0 it would have touched the LRU/LFU of the key.在 Redis 5.0 和 6.0 中,它会触及键的 LRU/LFU。
- OBJECT should not reveal logically expired keys (#8016)
OBJECT 不应显示逻辑上过期的键 (#8016)
Will now behave the same TYPE or any other non-DEBUG command.现在将表现出相同的 TYPE 或任何其他非 DEBUG 命令。
- Improve db id range check for SELECT and MOVE (#8085)
改进 SELECT 和 MOVE 的数据库 ID 范围检查 (#8085)
Changes the error message text on a wrong db index.更改错误数据库索引上的错误消息文本。
- Modify AUTH / HELLO error message (#7648)
修改 AUTH / HELLO 错误消息 (#7648)
Changes the error message text when the user isn’t found or is disabled.当用户未找到或被禁用时更改错误消息文本。
- BITOPS length limited to proto_max_bulk_len rather than 512MB (#8096)
BITOPS 长度限制为 proto_max_bulk_len 而不是 512MB (#8096)
The limit is now configurable like in SETRANGE, and APPEND.现在可以像在 SETRANGE 和 APPEND 中一样配置限制。
- GEORADIUS[BYMEMBER] can fail with -OOM if Redis is over the memory limit (#8107)
如果 Redis 超过内存限制,GEORADIUS[BYMEMBER] 可能会失败并显示 -OOM (#8107)
Other behavior changes(其它行为更改):
- Optionally (default) fail to start if requested bind address is not available (#7936)
如果请求的绑定地址不可用,可选(默认)启动失败(#7936)
If you rely on Redis starting successfully even if one of the bind addresses is not available, you’ll need to tune the new config.如果您依赖 Redis 成功启动,即使绑定地址之一不可用,您需要调整新配置。
- Limit the main db dictionaries expansion to prevent key eviction (#7954)
限制主数据库字典扩展以防止键驱逐 (#7954)
In the past big dictionary rehashing could result in massive data eviction.在过去,大字典重新散列可能导致大量数据驱逐。
Now this rehashing is delayed (up to a limit), which can result in performance loss due to hash collisions.现在这种重新散列被延迟(达到一个限制),这可能会由于散列冲突而导致性能损失。
- CONFIG REWRITE is atomic and safer, but requires write access to the config file’s folder (#7824, #8051)
CONFIG REWRITE 是原子的且更安全,但需要对配置文件的文件夹进行写访问(#7824,#8051)
This change was already present in 6.0.9, but was missing from the release notes.此更改已存在于 6.0.9 中,但在发行说明中缺失。
- A new incremental eviction mechanism that reduces latency on eviction spikes (#7653)
一种新的增量逐出机制,可减少逐出峰值的延迟 (#7653)
In pathological cases this can cause memory to grow uncontrolled and may require specific tuning.在病态情况下,这可能导致内存增长不受控制,可能需要进行特定调整。
- Not resetting “save” config when Redis is started with command line arguments. (#7092)
当使用命令行参数启动 Redis 时,不重置“保存”配置。 (#7092)
In case you provide command line arguments without “save” and count on it being disabled, Now the defaults “save” config will kick in.如果您提供没有“保存”的命令行参数并指望它被禁用,现在默认的“保存”配置将启动。
- Update memory metrics for INFO during loading (#7690)
在加载期间更新信息的内存指标 (#7690)
- When “supervised” config is enabled, it takes precedence over “daemonize”. (#8036)
当“受监督”时配置已启用,它优先于“daemonize”。 (#8036)
- Assertion and panic, print crash log without generating SIGSEGV (#7585)
断言和恐慌,打印崩溃日志而不生成 SIGSEGV(#7585)
- Added crash log report on SIGABRT, instead of silently exiting (#8004)
在 SIGABRT 上添加崩溃日志报告,而不是静默退出(#8004)
- Disable THP (Transparent Huge Pages) if enabled (#7381)
如果启用则禁用 THP(透明大页面)(#7381)
If you deliberately enabled it, you’ll need to config Redis to keep it.如果你故意启用它,你需要配置 Redis 来保留它。
Bug fixes(错误修复):
- Handle output buffer limits for module blocked clients (#8141)
处理模块阻塞客户端的输出缓冲区限制 (#8141)
Could result in a module sending reply to a blocked client to go beyond the limit.可能导致模块向阻塞的客户端发送回复超出限制。
- Fix setproctitle related crashes. (#8150, #8088)
修复 setproctitle 相关的崩溃。 (#8150、#8088)
Caused various crashes on startup, mainly on Apple M1 chips or under instrumentation.在启动时导致各种崩溃,主要是在 Apple M1 芯片上或在检测下。
- A module doing RM_Call could cause replicas to get nested MULTI (#8097).
执行 RM_Call 的模块可能导致副本获得嵌套的 MULTI (#8097)。
- Backup/restore cluster mode keys to slots map for repl-diskless-loadswapdb (#8108)
将集群模式密钥备份/恢复到 repl-diskless-load=swapdb 的插槽映射 (#8108)
In cluster mode with repl-diskless-load, when loading failed, slot map wouldn’t have been restored.在具有 repl-diskless-load 的集群模式下,当加载失败时,插槽映射不会被恢复。
- Fix oom-score-adj-values range, and bug when used in config file (#8046)
修复 oom-score-adj-values 范围,以及在配置文件中使用时的错误 (#8046)
Enabling setting this in the config file in a line after enabling it, would have been buggy.启用后在配置文件中的一行中启用此设置会出现错误。
- Reset average ttl when empty databases (#8106)
当数据库为空时重置平均 ttl (#8106)
Just causing misleading metric in INFO只会导致 INFO 中的误导性指标
- Disable rehash when Redis has child process (#8007)
当 Redis 有子进程时禁用 rehash (#8007)
This could have caused excessive CoW during BGSAVE, replication or AOFRW.这可能导致在 BGSAVE、复制或 AOFRW 期间过度 CoW。
- Further improved ACL algorithm for picking categories (#7966)
进一步改进了用于选择类别的 ACL 算法 (#7966)
Output of ACL GETUSER is now more similar to the one provided by ACL SETUSER.ACL GETUSER 的输出现在更类似于 ACL SETUSER 提供的输出。
- Fix bug with module GIL being released prematurely (#8061)
修复模块 GIL 过早发布的错误 (#8061)
Could in theory (and rarely) cause multi-threaded modules to corrupt memory.理论上(很少)会导致多线程模块损坏内存。
- Fix cluster redirect for module command with no firstkey. (#7539)
修复没有 firstkey 的模块命令的集群重定向。(#7539)
- Reduce effect of client tracking causing feedback loop in key eviction (#8100)
减少客户端跟踪在密钥逐出中导致反馈循环的影响(#8100)
- Kill disk-based fork child when all replicas drop and ‘save’ is not enabled (#7819)
当所有副本都删除且“保存”未启用时,杀死基于磁盘的分叉子项(#7819)
- Rewritten commands (modified for propagation) are logged as their original command (#8006)
重写命令(为传播而修改)被记录为它们的原始命令(#8006)
- Fix cluster access to unaligned memory (SIGBUS on old ARM) #7958
修复集群对未对齐内存的访问(旧 ARM 上的 SIGBUS)#7958
- If diskless repl child is killed, make sure to reap the child pid (#7742)
如果无盘 repl 子进程被杀死,请确保获取子进程 pid(#7742)
- Broadcast a PONG message when slot’s migration is over, may reduce MOVED responses (#7571)
广播 PONG 消息时slot 的迁移已经结束,可能会减少 MOVED 响应 (#7571)
Other improvements(其它改进):
- TLS Support in redis-benchmark (#7959)
redis-benchmark 中的 TLS 支持(#7959)
- Accelerate diskless master connections, and general re-connections (#6271)
加速无盘主连接和一般重新连接(#6271)
- Run active defrag while blocked / loading (#7726)
在阻塞/加载时运行主动碎片整理(#7726)
- Performance and memory reporting improvement - sds take control of its internal fragmentation (#7875)
性能和内存报告改进 - sds 控制其内部碎片 (#7875)
- Speedup cluster failover. (#7948)
加速集群故障转移。 (#7948)
Platform / toolchain support related improvements(平台/工具链支持相关的改进):
- Optionally (not by default) use H/W Monotonic clock for faster time sampling (#7644)
可选(不是默认情况下)使用 H/W Monotonic 时钟进行更快的时间采样(#7644)
- Remove the requirements for C11 and _Atomic supporting compiler (#7707)
删除对 C11 和 _Atomic 支持编译器的要求(#7707)
This would allow to more easily build and use Redis on older systems and compilers again.这将允许更轻松地构建和再次在旧系统和编译器上使用 Redis。
- Fix crash log registers output on ARM. (#8020)
修复 ARM 上的崩溃日志寄存器输出。 (#8020)
- Raspberry build fix. (#8095)
Raspberry 构建修复。 (#8095)
- Setting process title support for Haiku. (#8060)
为 Haiku 设置流程标题支持。 (#8060)
- DragonFlyBSD RSS memory sampling support. (#8023)
DragonFlyBSD RSS 内存采样支持。 (#8023)
New configuration options(新的配置选项):
- Enable configuring OpenSSL using the standard openssl.cnf (#8143)
启用使用标准 openssl.cnf配置 OpenSSL (#8143)
- oom-score-adj-values config can now take absolute values (besides relative ones) (#8046)
oom-score-adj-values 配置现在可以采用绝对值(除了相对值)(#8046)
- TLS: Add different client cert support. (#8076)
TLS:添加不同的客户端证书支持。 (#8076)
- Note that a few other changes listed above added their config options.
请注意,上面列出的其他一些更改添加了它们的配置选项。
Info fields and introspection changes(信息字段和内省更改):
- Add INFO fields to track diskless and disk-based replication progress (#7981)
添加信息字段以跟踪无盘和基于磁盘的复制进度 (#7981)
- Add INFO field for main thread cpu time, and scrape system time. (#8132)
添加主线程 cpu 时间的信息字段,并抓取系统时间。 (#8132)
- Add total_forks to INFO STATS (#8155)
将 total_forks 添加到 INFO STATS (#8155)
- Add maxclients and cluster_connections to INFO CLIENTS (#7979)
将 maxclients 和 cluster_connections 添加到 INFO CLIENTS (#7979)
- Add tracking bcast flag and client redirection in client list (#7995)
在客户端列表中添加跟踪 bcast 标志和客户端重定向 (#7995)
- Fixed INFO client_recent_max_input_buffer includes argv array (#8065, see #7874)
修复了 INFO client_recent_max_input_buffer 包括 argv 数组(#8065,请参见#7874)
- Note that a few other changes listed above added their info fields.
请注意,上面列出的其他一些更改添加了它们的信息字段。
Module API changes(模块 API 更改):
- Add CTX_FLAGS_DENY_BLOCKING as a unified the way to know if blocking is allowed (#8025)
添加 CTX_FLAGS_DENY_BLOCKING 作为了解是否允许阻塞的统一方式(#8025)
- Add data type callbacks for lazy free effort, and unlink (#7912)
添加数据类型回调以进行懒惰的免费工作,并取消链接(#7912)
- Add data type callback for COPY command (#8112)
添加 COPY 命令的数据类型回调(#8112)
- Add callbacks for defrag support. (#8149)
添加碎片整理支持的回调。 (#8149)
- Add module event for repl-diskless-load swapdb (#8153)
为 repl-diskless-load swapdb 添加模块事件 (#8153)
Module related fixes(与模块相关的修复):
- Moved RMAPI_FUNC_SUPPORTED so that it’s usable (#8037)
移动 RMAPI_FUNC_SUPPORTED 使其可用 (#8037)
- Improve timer accuracy (#7987)
提高计时器准确性 (#7987)
- Allow ‘\0’ inside of result of RM_CreateStringPrintf (#6260)
允许 RM_CreateStringPrintf 结果中包含 '\0' (#6260)
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:特别感谢您为此版本所做的大量工作:
- Oran Agra
- Yossi Gottlieb
- Viktor Söderqvist
- Yang Bodong
- Filipe Oliveira
- Guy Benoish
- Itamar Haber
- Madelyn Olson
- Wang Yuan
- Felipe Machado
- Wen Hui
- Tatsuya Arisawa
- Jonah H. Harris
- Raghav Muddur
- Jim Brunner
- Yaacov Hazan
- Allen Farris
- Chen Yang
- Nitai Caro
- sundb
- Meir Shpilraien
- maohuazhu
- Valentino Geron
- Zhao Zhao
- Qu Chen
- George Prekas
- Tyson Andre
- Uri Yagelnik
- Michael Grunder
- Huang Zw
- alexronke-channeladvisor
- Andy Pan
- Wu Yunlong
- Wei Kukey
- Yoav Steinberg
- Greg Femec
- Uri Shachar
- Nykolas Laurentino de Lima
- xhe
- zhenwei pi
- David CARLIER
Migrating from 6.0 to 6.2从 6.0 迁移到 6.2
Redis 6.2 is mostly a strict superset of 6.0, you should not have any problem upgrading your application from 6.0 to 6.2. However there are some small changes of behavior listed above, please make sure you are not badly affected by any of them.Redis 6.2 主要是 6.0 的严格超集,将应用程序从 6.0 升级到 6.2 应该没有任何问题。但是,上面列出的行为有一些小的变化,请确保您没有受到其中任何一个的严重影响。
Specifically these sections(特别是这些部分):
- Command behavior changes
命令行为更改
- Other behavior changes
其它行为更改
Cheers,干杯,
The Redis teamRedis 团队