Redis 8 GA:内置 8 种数据结构,io-threads 设为 8 时吞吐提升 112%
Redis 8 于 2025-05-01 正式 GA,官方博客:Redis 8 GA。
单一发行版
此前分离的 Redis Stack 与社区版合并为单一发行版 Redis Open Source,所有模块内置:不再需要单独安装模块,也不再有模块与 Redis 版本之间的匹配问题。
许可证在原有的 RSALv2 + SSPLv1 双许可之外,新增 AGPLv3 选项。
新增 8 种数据结构
包括 vector set(beta)、JSON、time series,以及 5 种概率结构:Bloom filter、Cuckoo filter、count-min sketch、top-k、t-digest。其中一些此前是独立模块,甚至属于商业功能。
- vector set [beta]:由 Redis 原作者 Salvatore Sanfilippo 开发,灵感来自 sorted set,支持高维向量嵌入的存储与相似性检索,面向语义搜索、推荐等 AI 用例。beta 期间的 API 与行为可能变化,甚至出现破坏性改动。
- JSON:把 JSON 文档作为 key 存储,用 JSONPath 检索与操作,支持原子更新,不必先把整份文档取回来改再写回。
- time series:面向 IoT 传感器、系统遥测、股价、汇率等带时间戳的数据。通过高效压缩降低内存占用,并可以定义 compaction(下采样)规则,把数据降精度后做长期存储。
- 概率结构:在内存占用和速度上有优势,代价是精度。Bloom filter / Cuckoo filter 用来判断某个值是否出现过;count-min sketch 估计出现次数;top-k 找最高频的值;t-digest 查询分位数。
Redis Query Engine
可以对 hash / JSON 数据建二级索引,支持向量搜索、按条件或标签精确匹配、按关键词或语义做最佳匹配,并支持 stemming、同义词扩展和模糊匹配。也可以把向量嵌入存进去做相似性检索。
ACL
为新增的数据结构引入了新的 ACL 分类;@read / @write 等现有分类已经覆盖新结构的命令。
新命令
延续 Redis 7.4 引入的 hash 字段过期能力,新增:
HGETDEL:取字段并删除;HGETEX:取字段,可选设置过期;HSETEX:设置字段,可选设置过期。
性能:30 多项优化
- 命令延迟:对比 Redis 7.2.5,149 项测试中有 90 个命令更快,p50 延迟下降 5.4%–87.4%。
- 吞吐:新的 I/O 线程实现,
io-threads参数默认值为 1;在多核 Intel 上设为 8 时,测得吞吐最高提升 112%。 - 复制:新机制同时开两条流——主节点快照流,加上复制期间的变更流,第二阶段不再阻塞等待第一阶段。在 10GB 数据集 + 2684 万写操作的测试中,主节点复制期间的写速率平均提高 7.5%,复制耗时减少 18%,主节点峰值复制缓冲降低 35%。
- 查询:查询引擎同时支持集群内查询(水平扩展)与垂直扩展,最高带来 16 倍查询吞吐;在 10 亿个 768 维向量、实时索引的条件下,可维持 66,000 次/秒插入(精度 ≥95%),低精度配置可以到 160,000 次/秒。
升级提示
跑 Redis 6 / 7 的建议升级。Redis Stack 6.2 / 7.2 / 7.4 的补丁将于 2025-09-15 停止发布。客户端侧,Jedis、Lettuce、go-redis、node-redis、NRedisStack、redis-py 等已经兼容。