Redis 8.4 发布,支持混合全文 + 向量搜索
Redis 8.4 内存数据存储增加了混合全文和向量搜索,为缓存和搜索工作负载提供超过 30% 的更高吞吐量。
在前一次 8.2 版本发布三个月多之后,分布式内存键值数据存储 Redis 正式推出了 8.4 版本,基于 Redis 8.0 打下的基础进行构建。
最重要的功能是新的 FT.HYBRID 命令,它将全文搜索和向量搜索结合在一个查询路径中。以前的方法需要多步骤逻辑、手动分数合并或外部管道,这些都会增加延迟并降低精度。
这允许应用程序以更自然的方式表达意图,混合语义匹配和字面匹配,优先考虑最近的上下文,并整合 GEO 和 GEOSHAPE 过滤器。
在性能方面,据开发者称,Redis 8.4 在典型缓存场景下(90% GET 和 10% SET)的吞吐量比 Redis 8.2 提高了超过 30%。由于引入了用于分布式查询的多线程 I/O 处理,搜索工作负载也获得了提升。
当大型结果集分布在多个分片上时,响应现在会并发处理,而不是通过单个线程处理。聚合操作也因此受益,响应时间减少,同时工作线程可自由执行搜索和评分逻辑。
关于内存效率,Redis 8.4 通过优化短字符串和同质数字数组的存储,进一步减少了 JSON 的内存消耗。长度最多为七个字节的短字符串现在可以内联存储,在常见情况下大约节省 37% 的内存使用量。
大型数值数组的收益更大。通过为每个数组只存储一次元素类型,并选择最紧凑的安全表示——int、uint、BF16、FP16、FP32 或 FP64——引擎可以根据数值范围将内存使用量减少 50% 到 92% 。
此外,此次发布还增加了以前需要 Lua 脚本的新原子操作。字符串键现在可以通过新的 SET 选项(IFEQ、IFNE、IFDEQ、IFDNE)和新的 XDELEX 命令直接支持比较并设置以及比较并删除操作。使用 MSETEX,多键更新也变得更容易,它可以在单次操作中设置多个键并有条件地管理它们的过期条件。
最后但同样重要的是,通过原子槽迁移,集群部署得到了显著改进。早期的 Redis 版本是逐个槽地迁移键,这会导致重定向、管道中断、多键操作不一致以及在故障场景下可能的数据丢失。
原子槽迁移则是在执行单次所有权转移之前,将整个槽的数据及其正在进行的更改传输到目标节点。客户端在复制过程中继续与源节点交互,有助于避免迁移中发生错误,并降低操作风险。
欲了解更多信息,请参见公告。Redis 8.4 现在可以通过 Docker Hub(Alpine 或 Debian 镜像)、Snap、Homebrew、RPM 和 APT 获取。
图片来源:Redis

