Redis 社区版 7.4 版本说明
Redis 社区版 7.4 发行说明。
Redis 堆栈 |
---|
Redis 社区版 7.4.1(2024 年 10 月)
升级紧急性 安全性:请参阅下面的安全修复程序。
安全修复
- (CVE-2024-31449 漏洞)Lua 库命令可能会导致堆栈溢出和潜在的 RCE。
- (CVE-2024-31227 漏洞)由于 ACL 选择器格式错误而可能导致拒绝服务。
- (CVE-2024-31228 漏洞)由于无界模式匹配而可能导致拒绝服务。
有关更多信息,请参阅有关这些漏洞的 Redis 博客文章。
Redis 社区版 7.4(2024 年 7 月)
这是 Redis 社区版 7.4 的正式发布版本。
对 7.4 新功能的更改(与 7.4 RC2 相比)
- #13391,#13438 哈希 - 单个字段的过期:RDB 文件格式更改
- #13372哈希 - 单个字段的过期时间:重命名和修复计数
expired_subkeys
度量 - #13372哈希 - 单个字段的过期时间:重命名
INFO
keyspace 字段设置为subexpiry
配置参数
- #13400添加 hide-user-data-from-log - 允许在日志文件中隐藏用户数据
Bug 修复
- #13407在
SCRIPT LOAD
- #13380修复由于无效命令上出现 OOM panic 而可能发生的崩溃
- #13383
FUNCTION FLUSH
- 改进 Lua GC 行为并修复 ASYNC 模式下的线程争用 - #13408
HEXPIRE
-like 命令应发出HDEL
如果过期时间是过去的密钥空间通知
Redis 社区版 7.4-rc2(2024 年 6 月)
升级紧急度 LOW (低):这是 Redis 社区版 7.4 的第二个候选版本。
性能和资源利用率改进
- #13296优化 CPU 缓存效率
对 7.4 新功能的更改(与 7.4 RC1 相比)
模块 API - 对 7.4 新功能的潜在重大更改(与 7.4 RC1 相比)
- #13326Hash - 单个字段的过期时间:避免从模块 API 函数调用时延迟过期
Redis 社区版 7.4-rc1(2024 年 6 月)
升级紧急度 LOW (低):这是 Redis 社区版 7.4 的第一个候选版本。
以下是此版本与 7.2.5 相比的完整更改列表。
新功能
- #13303Hash - 单个字段的过期时间。引入了 9 个命令:
HEXPIRE
和HPEXPIRE
为特定字段设置剩余生存时间HEXPIREAT
和HPEXPIREAT
将特定字段的过期时间设置为 UNIX 时间戳HPERSIST
删除特定字段的过期时间HEXPIRETIME
和HPEXPIRETIME
获取特定字段的过期时间HTTL
和HPTTL
获取特定字段的剩余生存时间
- #13117
XREAD
:从最后一条消息开始读取的新 ID 值+
- #12765
HSCAN
:新增功能NOVALUES
flag 仅报告字段名称 - #12728
SORT
,SORT_RO
:允许BY
和GET
当模式映射到与键相同的插槽时,群集模式下的选项 - #12299
CLIENT KILL
:新的可选过滤器:MAXAGE maxage
- 终止早于maxage
秒 - #12971Lua:暴露
os.clock()
获取 Lua 代码执行耗时的 API - #13276允许
SPUBLISH
命令MULTI ... EXEC
副本上的事务
Bug 修复
- #12898
XREADGROUP
:修复 master 和 replica 的 entries-read 不一致的问题 - #13042
SORT ... STORE
:修复创建的列表以尊重列表压缩和打包配置 - #12817, #12905 修复主线程和模块线程之间的竞争条件问题
- #12577如果 master 所有权发生更改,则从 shard 通道的副本中取消订阅所有客户端
- #12622
WAITAOF
如果在仅将效果传播到副本而不传播到 AOF 的模块命令之后使用,则可能会超时或挂起 - #11734
BITCOUNT
和BITPOS
如果 key 和 illegal 参数不存在,则返回 error,而不是 0 - #12394
BITCOUNT
:在检查 key 是否存在之前检查错误的参数 - #12961允许在内存不足时执行只读事务
- #13274修复客户端执行 ACL 更改时自身断开连接时的崩溃
- #13311集群:修复了在槽迁移期间因取消阻止客户端而导致的崩溃
安全性改进
性能和资源利用率改进
- #12838在许多客户端调用
PUNSUBSCRIBE
/SUNSUBSCRIBE
同时 - 编号 #12627减少醒来时的延迟
WAITAOF
客户端,流量不多 - #12754优化
KEYS
当 pattern 包含 hashtag 并表示单个插槽时 - #11695通过将集群元数据替换为槽特定的字典来减少内存并提高性能
- #13087
SCRIPT FLUSH ASYNC
现在不会阻塞主线程 - #12996主动内存碎片整理效率改进
- 排名 #12899提高重新哈希期间读取/更新作的性能
- #12536
SCAN ... MATCH
:当模式暗示群集插槽时提高性能 - #12450
ZRANGE ... LIMIT
:提高性能
其他常规改进
- #13133Lua:使用 jemalloc 而不是 libc 分配 VM 代码,并将其计为已用内存 *** 行为更改 ***
- #12171
ACL LOAD
: 不断开所有客户端的连接 *** 行为更改 *** - 排名 #13020允许在运行主动碎片整理时调整碎片整理配置
- #12949提高 avg_ttl 的准确性(平均键空间键 TTL)
- #12977允许运行
WAITAOF
在脚本中 - #12782在大多数类 Unix 系统中实施 TCP Keep-Alives
- 编号 #12707改进了在群集模式下拒绝脚本时的错误代码
- #12596支持
XREAD ... BLOCK
在脚本中;仅当它最终阻塞时才被拒绝
新指标
- #12849
INFO
:pubsub_clients
- Pub/Sub 模式下的客户端数量 - #12966
INFO
:watching_clients
- 正在监视 Key 的客户端数 - #12966
INFO
:total_watched_keys
- 监视键的数量 - #12476
INFO
:client_query_buffer_limit_disconnections
- 对客户端输入缓冲区 OOM 事件进行计数 - #12476
INFO
:client_output_buffer_limit_disconnections
- 计算客户端输出缓冲区 OOM 事件 - #12996
INFO
:allocator_muzzy
- 内存已返回到作系统,但仍显示为 RSS,直到作系统回收它 - #13108
INFO
:evicted_scripts
- 被逐出的 eval 脚本的数量。用户可以检查它以查看他们是否在滥用 EVAL - #12996
MEMORY STATS
:allocator.muzzy
- 内存已返回到作系统,但仍显示为 RSS,直到作系统回收它 - #12913
INFO MEMORY
mem_overhead_db_hashtable_rehashing
- 内存重新分片开销(仅限即将释放的内存) - #12913
MEMORY STATS
:overhead.db.hashtable.lut
- 数据库中 Dictionary 存储桶的总开销 - #12913
MEMORY STATS
:overhead.db.hashtable.rehashing
- 当前正在重新哈希的数据库字典的临时内存开销 - #12913
MEMORY STATS
:db.dict.rehashing.count
- 当前正在重新哈希的顶级词典的数量 - #12966
CLIENT LIST
:watch
- 每个客户端当前正在监视的键数
模块 API
- #12985新的 API 调用:
RM_TryCalloc
和RM_TryRealloc
- 允许模块正常处理内存分配失败 - 排名 #13069新的 API 调用:
RM_ClusterKeySlot
- 密钥将哈希到哪个 slot - 排名 #13069新的 API 调用:
RM_ClusterCanonicalKeyNameInSlot
- 获取将映射到槽的一致键 - #12486新的 API 调用:
RM_AddACLCategory
- 允许模块声明新的 ACL 类别
配置参数
- #12178新的配置参数:
max-new-connections-per-cycle
和max-new-tls-connections-per-cycle
限制每个事件循环周期的新客户端连接数 - 排名 #7351重命名一些 CPU 配置参数以进行样式对齐。为旧名称添加了别名以避免中断更改
CLI 工具
- #10609 redis-cli: 新增
-t <timeout>
参数:指定服务器连接超时(以秒为单位) - #11315 redis-cli: 新增
-4
和-6
在 DNS 查找上首选 IPV4 或 IPV6 的标志 - #12862 redis-cli:允许按向上箭头返回任何命令(包括仍未保留的敏感命令)
- #12543 redis-cli:添加反向历史搜索(如终端中的 Ctrl+R)
- #12826 redis-cli: 添加
--keystats
和--keystats-samples
到联合收割机--memkeys
和--bigkeys
使用其他分布数据 - #12735 redis-cli: 修复:
--bigkeys
和--memkeys
现在处理集群副本 - #9411 redis-benchmark: 增加对二进制字符串的支持
- #12986 redis-benchmark: 修复:为节点选择随机 slot 以跨 slot 分配作