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%;LINSERT、LREM、LPOS等列表操作延迟降 25%+;- 另有 17 个命令提升 5%+,52 个命令延迟降 2%+。
I/O 多线程场景下(8 个 I/O 线程,20% 写 / 80% 读的典型缓存比例),吞吐相比 8.0 最高提升 49%。
具体优化点:BITCOUNT 引入预取;SCAN 只在含易失键的 DB 上做过期检查;LREM、LPOS、LINSERT、ZRANK 等缓存 string2ll 结果(quicklistCompare);使用 TTL 时优化 COPY、RENAME、RESTORE;降低 client cron 开销,避免阻塞主线程;向量集的 RDB 加载与 RESTORE 提速。
新命令与命令扩展
Streams:新增 XDELEX(删除 stream 条目,带消费组处理选项)与 XACKDEL(确认并删除条目,单次原子操作),并扩展了 XADD、XTRIM。KEEPREF、DELREF、ACKED 三个选项控制删除时消费组引用怎么处理——多消费组场景下清理已确认条目更简单。
Bitmap:BITOP 新增四个逻辑算子 DIFF、DIFF1、ANDOR、ONE。
集群监控:新增 CLUSTER SLOT-STATS,给出每个 slot 的用量指标,包括键数量、CPU 时间、网络进出流量。
向量检索:VSIM 支持 IN 操作符写过滤表达式;新增 WITHATTRIBS,返回元素关联的 JSON 属性;新增支持压缩的 SVS-VAMANA 向量索引类型。SHARD_K_RATIO 参数(不稳定特性)用于集群 KNN 向量查询,在网络延迟与精度之间取舍,对精度要求不高时返回更快。
键空间通知新增事件类型:OVERWRITTEN(键值被完全覆盖)、TYPE_CHANGED(键类型改变)。
Modules API:RedisModule_Get* / Set* 允许模块访问 Redis 配置;RM_UnsubscribeFromKeyspaceEvents 让模块退订指定的键空间通知。
兼容性
与受支持的客户端库保持兼容:Jedis、Lettuce、go-redis、node-redis、NRedisStack、redis-py 升级到 8.2 即可直接受益。