Redis 8.6 来了:更快、更省、更稳的实时数据引擎

作者:杨帅      发布日期:2026.06.05

8.6
Redis Open Source · 发布解读

Redis 8.6 来了:
更快、更省、更稳的实时数据引擎

幂等写入、热点 key 检测、新淘汰策略、内存削减与一连串性能优化——这一版本把火力集中在性能、内存与生产可靠性上。

截至 2026 年 6 月,Redis 开源版可用于生产的最新正式发布(GA)版本是 Redis 8.6。Redis 8.8 已进入候选发布(RC)阶段,但仍属预发布,官方明确不建议用于生产环境。本文聚焦可以放心上线的 8.6。

如果你还停留在 Redis 7.x,那么从 8.0 到 8.6 这一路演进值得认真看一看。Redis 8 系列把原本属于 Redis Stack 的搜索、JSON、时间序列、概率型数据结构等能力整合进了开源内核,而 8.6 在此基础上继续朝三个方向发力:性能、内存占用,以及生产可靠性。下面逐一拆解。

01 / Streams

幂等写入:终于有了"至多一次"保证

这是 8.6 最值得关注的功能性改动。XADD 新增了 IDMPIDMPAUTO 两个参数,为流(Stream)的写入提供幂等性支持,也就是"至多一次"(at-most-once)的投递保证。

过去用 Streams 做消息队列时,客户端因网络抖动而重试 XADD,很容易导致同一条消息被重复写入,开发者通常得自己在业务层做去重。现在内核层面就能识别重复写入并避免产生重复条目。两个配套配置项控制幂等记录的生命周期:

  • stream-idmp-duration — 幂等标记的默认保留时长
  • stream-idmp-maxsize — 幂等记录的默认最大数量
⚠ 当前限制 当使用 appendonly yesaof-use-rdb-preamble no(非默认配置)时,应避免对 XADD 使用 IDMP/IDMPAUTO。官方表示此限制将在后续补丁中移除。

此外,XREADGROUP 在 8.4 中引入的 CLAIM 选项在 8.6 里也得到了性能优化。

02 / 可观测

热点 Key 检测:新增 HOTKEYS 命令

线上排查"某个 key 被打爆"的问题,过去往往要靠抽样、监控埋点或第三方工具。8.6 直接在内核里加入了热点 key 的检测与上报能力,并提供新命令 HOTKEYS

你可以直接向 Redis 询问当前哪些 key 访问最频繁,对定位缓存击穿、识别访问倾斜、做分片优化都非常实用。HOTKEYS HELP 子命令也一并补齐了。

03 / 淘汰策略

两种新策略:基于"最近修改时间"

maxmemory-policy 新增了两个基于最近修改时间(LRM)的淘汰策略:

  • volatile-lrm — 在设置了过期时间的 key 中,优先淘汰最久未被修改的
  • allkeys-lrm — 在所有 key 中,优先淘汰最久未被修改的

这和我们熟悉的 LRU 思路不同——LRU 看的是"最近是否被访问过",而 LRM 看的是"最近是否被过"。对于"读多写少、写过之后基本不再变化"的数据集,LRM 提供了一种更贴合业务语义的淘汰逻辑。

04 / 内存

内存占用显著下降

8.6 对两类常用数据结构做了底层结构优化,带来官方所称的"显著的内存削减":

  • 哈希(hashtable 编码) — 将字段名与字段值合并到单个结构体中
  • 有序集合(skiplist 编码) — 将分值与成员值合并到单个结构体中

更少的结构体意味着更少的指针开销和内存碎片。对于存放大量 hash 或 sorted set 的实例,节省相当可观。叠加 8.4 对 JSON 同构数组最高约 91% 的内存优化,一路升级的收益是累积的。

05 / 性能

一连串性能优化

  • 回复拷贝规避 — 减少批量字符串回复时的内存拷贝次数
  • ZRANK 优化 — 有序集合排名查询更快
  • 带过期时间的 set 命令优化
  • 预取逻辑与预取尺寸优化
  • ARM AArch64 默认启用硬件时钟,复用缓存时间以减少每条命令的系统调用
  • 向量集合距离计算向量化 — Intel / AMD / ARM 平台用 SIMD 加速二值与 8-bit 量化向量距离,AI 向量检索场景直接受益

放在更大背景里看,Redis 8 系列整体相比 7.2.5 引入了超过 30 项性能改进,部分命令 p50 延迟下降幅度从 5% 到 87% 不等,并通过多线程 I/O 大幅提升吞吐。8.6 是这条曲线上的又一段延续。

06 / 安全

基于 TLS 证书的客户端自动认证

8.6 新增了基于 TLS 证书的客户端自动认证。通过配置项 tls-auth-clients-user,客户端可凭证书自动映射到对应的 Redis 用户身份,无需在应用里单独管理密码凭证。

配套新增监控指标 acl_access_denied_tls_cert 用于统计证书认证失败次数,便于安全审计。此外这一系列还做了多项隐私改进,例如从 ACL 日志和服务器日志中隐藏个人可识别信息(PII)。

07 / 时间序列

支持 NaN 与新聚合器

RedisTimeSeries 现在支持 NaN(非数值) 值,并新增两个聚合器:COUNTNAN(统计 NaN 数量)与 COUNTALL(统计含 NaN 的全部值)。对采集自传感器、监控等可能产生缺失/异常读数的真实数据来说,原生处理 NaN 让数据清洗与统计更自然。

08 / 运维

更强的可观测性

  • 按数据类型的内存直方图 — 新增配置 key-memory-histograms 及对应指标,看清各类结构的内存分布
  • 按 slot 的资源消耗统计 — 新增配置 cluster-slot-stats-enabled,集群场景定位热点分片更直接

模块开发者也获得了新的 Key 元数据 API(RM_CreateKeyMetaClassRM_SetKeyMetaRM_GetKeyMeta 等),可为 key 附加自定义元数据。

要不要升级?

[✓]
用 Streams 做消息投递、长期被重复消息困扰 → 幂等写入直接解决痛点
[✓]
线上经常需要排查热点 keyHOTKEYS 省去大量埋点工作
[✓]
实例内存吃紧、存了大量 hash / sorted set → 内存优化立竿见影
[✓]
在做向量检索 / AI 场景 → 向量距离 SIMD 优化有实打实收益
[✓]
安全合规有要求 → TLS 证书认证 + 日志 PII 脱敏
⚠ 升级前提醒 Redis 8 把搜索、JSON 等命令纳入了既有的 ACL 分类(如 @read@write),这可能让原有 ACL 规则放行的命令范围变大,请结合自身权限配置评估这部分潜在的破坏性变更。同时 8.6.x 多个补丁修复了若干可能导致远程代码执行的 CVE,生产环境建议直接上最新补丁版本(撰文时为 8.6.3)。

至于 Redis 8.8——它带来了像 INCREX(窗口计数限流器)、GCRA 限流算法、XNACK(流消费者显式释放待处理消息)等更激进的新能力,但目前仍是预发布状态,先观望、别急着上生产