Redis 社区版 7.4 发布说明

Redis 社区版 7.4 发布说明。

Redis 社区版 7.4.1 (2024年10月)

升级紧急程度 安全:请查看以下安全修复。

安全修复

  • (CVE-2024-31449) Lua库命令可能导致栈溢出和潜在的远程代码执行。
  • (CVE-2024-31227) 由于格式错误的ACL选择器可能导致拒绝服务。
  • (CVE-2024-31228) 由于无限制的模式匹配可能导致拒绝服务。

欲了解更多信息,请参阅Redis博客文章关于这些漏洞的内容。

Redis 社区版 7.4 (2024年7月)

这是Redis社区版7.4的正式发布版本。

新7.4功能的更改(与7.4 RC2相比)

  • #13391,#13438 Hash - 单个字段的过期:RDB文件格式更改
  • #13372 Hash - 单个字段的过期:重命名并修复 expired_subkeys 指标的计数
  • #13372 Hash - 单个字段的过期:将INFO键空间字段重命名为subexpiry

配置参数

  • #13400 添加 hide-user-data-from-log - 允许从日志文件中隐藏用户数据

错误修复

  • #13407SCRIPT LOAD 后触发 Lua GC
  • #13380 修复由于无效命令导致的OOM崩溃问题
  • #13383 FUNCTION FLUSH - 改进Lua GC行为并修复ASYNC模式下的线程竞争问题
  • #13408 HEXPIRE 类似的命令如果过期时间在过去,应该发出 HDEL 键空间通知

Redis 社区版 7.4-rc2 (2024年6月)

升级紧迫性低:这是Redis社区版7.4的第二个候选版本。

性能和资源利用率的改进

  • #13296 优化CPU缓存效率

新7.4版本的新功能变化(与7.4 RC1相比)

  • #13343 Hash - 单个字段的过期:当键不存在时 - 返回一个数组(每个字段的不存在代码)
  • #13329 Hash - 单个字段的过期:新的键空间事件:hexpired

模块 API - 与 7.4 RC1 相比,新 7.4 功能的潜在破坏性更改

  • #13326 Hash - 单个字段的过期:避免在从模块API函数调用时进行延迟过期

Redis 社区版 7.4-rc1 (2024年6月)

升级紧迫性低:这是Redis社区版7.4的第一个候选版本。

以下是此版本与7.2.5相比的全面更改列表。

新功能

  • #13303 Hash - 单个字段的过期。引入了9个命令:
    • HEXPIREHPEXPIRE 设置特定字段的剩余生存时间
    • HEXPIREATHPEXPIREAT 设置特定字段的过期时间为UNIX时间戳
    • HPERSIST 移除特定字段的过期时间
    • HEXPIRETIMEHPEXPIRETIME 获取特定字段的过期时间
    • HTTLHPTTL 获取特定字段的剩余生存时间
  • #13117 XREAD: 新的id值 + 用于从最后一条消息开始读取
  • #12765 HSCAN: 新增 NOVALUES 标志,仅报告字段名称
  • #12728 SORT, SORT_RO: 在集群模式下,当模式映射到与键相同的槽时,允许使用BYGET选项
  • #12299 CLIENT KILL: 新的可选过滤器: MAXAGE maxage - 杀死超过 maxage 秒的连接
  • #12971 Lua: 暴露 os.clock() API 用于获取 Lua 代码执行的耗时
  • #13276 允许在副本上的MULTI ... EXEC事务中使用SPUBLISH命令

错误修复

  • #12898 XREADGROUP: 修复主节点和副本之间读取条目不一致的问题
  • #13042 SORT ... STORE: 修复创建的列表以遵守列表压缩和打包配置
  • #12817, #12905 修复主线程和模块线程之间的竞争条件问题
  • #12577 如果主节点所有权发生变化,从分片通道取消订阅所有客户端的副本
  • #12622 WAITAOF 如果在仅将效果传播到副本而不传播到AOF的模块命令之后使用,可能会超时或挂起
  • #11734 BITCOUNTBITPOS 在键不存在和参数非法时返回错误,而不是0
  • #12394 BITCOUNT: 在检查键是否存在之前检查错误的参数
  • #12961 允许在内存不足时执行只读事务
  • #13274 修复客户端执行ACL更改导致自身断开连接时崩溃的问题
  • #13311 集群:修复由于在槽迁移期间解除客户端阻塞导致的崩溃

安全性改进

  • #13108 Lua: 使用EVAL生成的脚本的LRU淘汰 *** 行为变更 ***
  • #12961 限制MULTI ... EXEC事务的总请求大小
  • #12860 编辑ACL用户名信息并将*-key-file-pass configs标记为敏感

性能和资源利用率的改进

  • #12838 提高当多个客户端同时调用 PUNSUBSCRIBE / SUNSUBSCRIBE 时的性能
  • #12627 减少在唤醒WAITAOF客户端且流量不大时的延迟
  • #12754 优化 KEYS 当模式包含井号并暗示单个槽时
  • #11695 通过用特定于槽的字典替换集群元数据来减少内存并提高性能
  • #13087 SCRIPT FLUSH ASYNC 现在不会阻塞主线程
  • #12996 活动内存碎片整理效率改进
  • #12899 提高重新哈希期间读取/更新操作的性能
  • #12536 SCAN ... MATCH: 当模式暗示集群槽时提高性能
  • #12450 ZRANGE ... LIMIT: 性能提升

其他一般性改进

  • #13133 Lua: 使用 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 - 正在监视键的客户端数量
  • #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 - 数据库中字典桶的总开销
  • #12913 MEMORY STATS: overhead.db.hashtable.rehashing - 当前正在重新哈希的数据库字典的临时内存开销
  • #12913 MEMORY STATS: db.dict.rehashing.count - 当前正在重新哈希的顶级字典的数量
  • #12966 CLIENT LIST: watch - 每个客户端当前正在监视的键的数量

模块 API

  • #12985 新的API调用:RM_TryCallocRM_TryRealloc - 允许模块优雅地处理内存分配失败
  • #13069 新API调用:RM_ClusterKeySlot - 一个键将哈希到的槽
  • #13069 新API调用:RM_ClusterCanonicalKeyNameInSlot - 获取一个将映射到槽的一致键
  • #12486 新API调用:RM_AddACLCategory - 允许模块声明新的ACL类别

配置参数

  • #12178 新增配置参数:max-new-connections-per-cyclemax-new-tls-connections-per-cycle 用于限制每个事件循环周期内的新客户端连接数
  • #7351 重命名一些CPU配置参数以保持风格一致。添加了旧名称的别名以避免破坏性更改

命令行工具

  • #10609 redis-cli: 新增 -t 参数:指定服务器连接超时时间(以秒为单位)
  • #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: 修复:为节点随机选择一个插槽以将操作分布在多个插槽中
RATE THIS PAGE
Back to top ↑