Redis Open Source 8.6:XADD 幂等、LRM 淘汰与 HOTKEYS
Redis Open Source 8.6 于 2026-02-10 GA。以下按相对 8.4 的变化整理,文末附 8.6.2 的安全更新内容。
- 发布说明:Announcing Redis 8.6 performance improvements and streams
- 版本文档:What's new in Redis 8.6
- 8.6.2 更新日志:00-RELEASENOTES
流:XADD 的幂等投递
XADD 新增 IDMP 与 IDMPAUTO 参数,提供至多一次(at-most-once)投递保证:同一条消息即使生产者因崩溃或网络故障重发,也只会加入流一次。IDMPAUTO 自动生成幂等标识,IDMP 由调用方手动指定。
默认的幂等生产行为由两个配置控制:
stream-idmp-duration
stream-idmp-maxsize
stream-idmp-duration 决定幂等标识保留多久,stream-idmp-maxsize 限制其占用上限。取舍点在于:这两个值本身就是内存与去重窗口之间的交换——窗口开得越大,重发被识别得越久,内存开销也越高。
淘汰策略:volatile-lrm 与 allkeys-lrm
新增两种淘汰策略 volatile-lrm 与 allkeys-lrm(least recently modified),按「最近未被修改」淘汰,而非「最近未使用」。配置入口仍是 maxmemory-policy:
maxmemory-policy allkeys-lrm
这适合读取多、修改少的负载:读操作不会刷新键的「新鲜度」,因此长期只读但仍有价值的键不会被误淘汰。反过来,如果业务上「访问即有价值」,LRU 类策略仍然更合适。
HOTKEYS:热点键检测
新增 HOTKEYS 命令,实时检测并上报频繁访问的键,用于定位集群中的性能瓶颈。这条线索是逐版本补齐的:8.2 引入 CLUSTER SLOT-STATS 检测热 slot,8.4 引入 Atomic Slot Migration 迁移它们,8.6 把观测粒度下沉到键。
安全:TLS 证书自动映射 ACL 用户
tls-auth-clients-user 支持基于证书 Common Name (CN),把 mTLS 客户端自动映射到某个 ACL 用户。客户端不再需要发送 AUTH,证书本身即凭据,省去 ACL 密码的分发与管理。前提是证书签发与 CN 命名本身受控,否则就把认证边界转移到了 CA 上。
时间序列:NaN 与新的聚合器
时间序列支持 NaN 值,用于标记未知或暂缺的数据,稍后回填。同时新增 COUNTNAN、COUNTALL 聚合器:前者统计 NaN 数量,后者统计全部样本,便于区分「没有数据」和「数据为零」。
内存与可观测性
- hashtable-encoded 哈希与 skiplist-encoded 有序集合的内存占用显著下降;
- 新增 keys memory size histograms,通过
key-memory-histograms配置; cluster-slot-stats-enabled提供 per-slot 资源统计;- 该版本共包含 20 余项性能与资源利用率改进。
内存直方图和 per-slot 统计都带常驻开销,按需开启比默认全开更稳妥。
8.6.2(2026-03-24,安全更新)
修复项包括:
- 副本全量同步时命令处理崩溃;
- 新增内部命令
XIDMPRECORD与 AOFRW,用于恢复流的 IDMP 状态; - XADD 使用
IDMP/IDMPAUTO命中已有 IID 时,记录元数据变化; - 若干内存泄漏;
- RDB 加载后 IDMP 定时过期失效;
- 命令 arity 错误时 ACL 检查崩溃;
HSETEX/HGETEX未校验FIELDS只能出现一次。
其中 IDMP 状态持久化相关的几项,直接关系到上面那套至多一次保证在重启、AOF 重写、RDB 加载之后是否仍然成立。