编程 Redis 8.2 GA:kvobj 统一键值对象,短字符串内存降 25%-37%

2026-09-15 21:07:13

Redis 8.2 GA:kvobj 统一键值对象,短字符串内存降 25%-37%

Redis Open Source 8.2 于 2025-08-04 发布。这次改动集中在内存布局、命令执行路径,以及一批新命令和命令选项上。出处:Redis 8.2 新特性文档官方发布博客00-RELEASENOTES(8.2.0 tag)

内存:kvobj 把键名、短值和 TTL 收进一次分配

8.2 换了键值存储方式,引入统一的 key-value object(kvobj):键名、短值以及可选的 TTL 被打包进同一次内存分配,从「每键多次分配」变成「每键一次分配」。

结果是短字符串内存降低 25%-37%;JSON 里整数与浮点的存储方式也做了优化,内存省下 25%-67%。

其余内存相关改动:

  • 降低追踪 malloc 可用内存的开销;
  • 优化 scan 回调里的过期检查;
  • SVS-VAMANA 向量索引新增压缩变体。

性能:调优 70+ 命令,I/O 多线程下吞吐最高提升 49%

命令层面优化了 70 多个:

  • BITCOUNT 快 35%;
  • LINSERTLREMLPOS 等列表操作延迟降 25%+;
  • 另有 17 个命令提升 5%+,52 个命令延迟降 2%+。

I/O 多线程场景下(8 个 I/O 线程,20% 写 / 80% 读的典型缓存比例),吞吐相比 8.0 最高提升 49%。

具体优化点:BITCOUNT 引入预取;SCAN 只在含易失键的 DB 上做过期检查;LREMLPOSLINSERTZRANK 等缓存 string2ll 结果(quicklistCompare);使用 TTL 时优化 COPYRENAMERESTORE;降低 client cron 开销,避免阻塞主线程;向量集的 RDB 加载与 RESTORE 提速。

新命令与命令扩展

Streams:新增 XDELEX(删除 stream 条目,带消费组处理选项)与 XACKDEL(确认并删除条目,单次原子操作),并扩展了 XADDXTRIMKEEPREFDELREFACKED 三个选项控制删除时消费组引用怎么处理——多消费组场景下清理已确认条目更简单。

BitmapBITOP 新增四个逻辑算子 DIFFDIFF1ANDORONE

集群监控:新增 CLUSTER SLOT-STATS,给出每个 slot 的用量指标,包括键数量、CPU 时间、网络进出流量。

向量检索VSIM 支持 IN 操作符写过滤表达式;新增 WITHATTRIBS,返回元素关联的 JSON 属性;新增支持压缩的 SVS-VAMANA 向量索引类型。SHARD_K_RATIO 参数(不稳定特性)用于集群 KNN 向量查询,在网络延迟与精度之间取舍,对精度要求不高时返回更快。

键空间通知新增事件类型:OVERWRITTEN(键值被完全覆盖)、TYPE_CHANGED(键类型改变)。

Modules APIRedisModule_Get* / Set* 允许模块访问 Redis 配置;RM_UnsubscribeFromKeyspaceEvents 让模块退订指定的键空间通知。

兼容性

与受支持的客户端库保持兼容:Jedis、Lettuce、go-redis、node-redis、NRedisStack、redis-py 升级到 8.2 即可直接受益。

推荐文章

程序员茄子在线接单