就在前两天,Redis 8.0 正式版 (GA) 来了!这并不是一次简单的更新,Redis 8.0 不仅带来了性能上的进一步提升,还带来一些实用的新特性与功能增强。并且,最重要的是拥抱 AGPLv3 重归开源!
下面,简单聊聊 Redis 8.0 到底带来了哪些重磅更新。
再次回归开源
2024 年 3 月,Redis 宣布将其许可证从 BSD 切换到 RSALv2/SSPLv1 双许可证。这在社区引起了轩然大波,因为 SSPLv1 并不被开源促进会(OSI)认可为真正的开源许可证,这让很多开发者和云厂商感到不满,甚至催生了像 Valkey 这样的社区分支。大家都在担心 Redis 是不是要离开源越来越远了。
《Redis设计与实现》作者黄健宏老师当时也发表了自己的看法:
在 Redis 8.0 中,他们做出了一个关键决定:在保留原有 RSALv2/SSPLv1 许可证的同时,新增了 OSI 批准的 AGPLv3 (Affero General Public License v3) 作为授权选项!
为了体现决心,Redis 将其免费产品的名称从“Redis Community Edition”更改为“Redis Open Source”,更加强调其开源属性。
这表明 Redis 公司还是比较重视社区的反馈,想要做出一些事情来改变。
新增数据结构
新增 Vector Set 数据结构 (Beta 版): 专为 AI 应用设计,用于存储和查询高维向量嵌入 (Vector Embeddings),极大地增强了 Redis 在向量相似性搜索 (VSS)、语义搜索、推荐系统等场景下的能力。它补充了 Redis 查询引擎中已有的向量搜索能力。
原生支持 JSON 数据结构: 这意味着直接在 Redis 中存储和操作 JSON 文档。Redis 提供了基于 JSONPath 语法的命令,可以高效地访问和修改 JSON 文档中的特定元素。
新增 5 种概率数据结构:
- 概率数据结构用较小的内存和计算开销来解决大数据流或大数据集中的常见问题(以牺牲绝对精度为代价)。
- 在原有的 HyperLogLog (基数估计) 基础上,新增了:
- Bloom filter & Cuckoo filter: 判断元素是否存在于集合中(有一定误判率)。
- Count-min sketch: 估计元素在数据流中出现的频率。
- Top-k: 找出数据流中最频繁出现的 K 个元素。
- t-digest: 估计数据流中数值的分位数(例如,有多少比例的值小于某个给定值)。
Redis 查询引擎增强
不仅仅是简单的 Key-Value 查找!现在支持在 Hash 和 JSON 数据结构上创建二级索引。支持更复杂的查询:精确匹配、范围查询、全文搜索(支持词干提取、同义词扩展、模糊匹配)以及向量相似性搜索。
性能提升
对比 Redis 7.2.5 版本,Redis 8.0 引入了超过 30 项性能改进,多达 90 个常用命令的延迟降低了 5.4% 至 87.4% !大部分应用升级后都能感受到明显的性能提升。
Redis 8.0 改进了自 Redis 6 以来的 I/O 线程实现。通过配置 io-threads
参数(例如设置为 8),在多核 CPU 上,吞吐量(每秒操作数)最高可提升 112% (约 2 倍)!
Redis 8.0 引入了新的复制机制,主从同步(特别是大数据集的全量同步+增量同步)期间,主节点处理写入操作的平均速率、复制总耗时都有明显提升。
可视化工具
Redis Insight 和 Redis for VS Code 完全兼容 Redis 8.0。并且,Redis Insight 特别集成了 Redis Copilot(自然语言 AI 助手),用来提升数据和命令处理体验。
总结
Redis 8.0 算是一个里程碑的版本,拥抱 AGPLv3 重归开源,还引入了一些实用的新特性与功能增强。
如果想要了解更多 Redis 8.0 的信息,可以查看官方文档:https://redis.io/blog/redis-8-ga/ 。
下面是我写的几篇 Redis 原创文章,感兴趣的话,可以看看:
- Redis 常见面试题总结(上)
- Redis 常见面试题总结(下)
- 如何基于Redis实现延时任务
- Redis 5 种基本数据类型详解
- Redis 3 种特殊数据类型详解
- Redis为什么用跳表实现有序集合
- Redis 持久化机制详解
- Redis 内存碎片详解
- Redis 常见阻塞原因总结