前言
Redis 每个版本都有自己的脾气,有的适合稳扎稳打,有的适合尝鲜,有的为了适应 AI 。
这篇文章的目标是:扒一扒每个版本的核心变化、好玩的新命令、协议许可证的来龙去脉。
另外,如果你是自己下载 Redis 源码编译、或者用 Docker 跑在服务器上,那后面提到的那些许可证问题------基本跟你没啥关系。协议限制主要针对的是云厂商把 Redis 打包成托管服务卖钱。你自己用,该咋用还咋用。
一、Redis 成长简史(1.0 → 8.6)
奠基时代(1.0 -- 2.8):比 Memcached 聪明一点点
Redis 1.0(2010)
那时候 Redis 还是个"有点想法的缓存"。Memcached 只能存不透明的字节块,Redis 能存字符串、列表、集合,而且可以在服务端直接操作。
比如 LPOP、SADD,少了好几次网络往返。1.1 还顺手加了 AOF 持久化,数据没那么容易丢。
Redis 2.0(2011)
引入了哈希和有序集合(Sorted Set) 。有序集合是 Redis 最经典的设计之一:每个元素带一个分数,按分数排序,ZRANGE 和 ZRANK 能干很多事。后来的排行榜、限流器、延迟队列,都靠它。
Redis 2.6(2012)
Lua 脚本来了。你可以把一串逻辑塞到 Redis 里一次性执行,不用客户端来回跑。同时 RESP2 协议也定了下来,简洁、可读、高效,后来的客户端生态基本都长这样。
分布式时代(3.0 -- 5.0):不再是单机小玩具
Redis 3.0(2015)
Redis Cluster 正式推出。数据自动分到 16384 个槽里,加节点就能水平扩展。Redis 终于可以名正言顺地说自己是个"分布式数据库"了。
Redis 4.0(2017)
模块 API 开放了。这相当于给 Redis 开了一个"应用商店"------RediSearch、RedisJSON、RedisGraph 这些扩展不用再等官方内核合并,自己就能独立演进。
Redis 5.0(2018)
Streams 数据类型问世。Redis 终于能做可靠的消息队列 了。有持久化、有消费者组、有消息确认,不是以前 Pub/Sub 那种"发完就忘"的风格。同年的集群管理工具也从 Ruby 脚本移到了 redis-cli,少装一堆依赖。
消息与安全时代(6.x):线程多了,权限也细了
Redis 6.0(2020)
两件大事。
第一,多线程 I/O。注意:命令执行还是单线程(保证简单和原子性),但网络读写交给了多个线程。高并发下吞吐量大概能涨 50%。
第二,ACL(访问控制列表) 。以前只有一个 requirepass,现在可以给不同用户分配不同命令、不同 Key 前缀的权限。多租户场景终于不怕误操作了。
运维与性能时代(7.x):让开发运维都省点心
Redis 7.0(2022)
Redis Functions 替代了部分 Lua 脚本的痛点------以前每次 EVAL 都要传整个脚本,没法复用。现在脚本变成一次加载、多次调用的"函数",还可以版本管理。
另一个改进是多部分 AOF。老 AOF 重写时容易卡,现在拆成基础文件 + 增量文件,重写只动增量,平滑很多。
Redis 7.2(2023)
这个版本带了一个呼声很高的功能:哈希字段过期 (HEXPIRE、HEXPIREAT)。以前整个 Hash 要么一起活、要么一起过期,现在可以给每个 Field 单独设置 TTL。用户会话、临时属性这类场景终于不用再绕路了。
Redis 7.4(2024)
性能继续优化,但也是从这个版本开始,Redis 的许可证从 BSD 换成了 RSALv2/SSPLv1 双许可。我们后面专门说说协议。
AI 与内存时代(8.x):向量来了,AI 能直接跑了
Redis 8.0(2025)
一个大招版本。
- 性能:官方说 ARM 架构下吞吐量提升 5 倍以上,内存占用也降了不少。
- AI 原生 :引入了 Vector Set------一个专门存高维向量嵌入的数据类型,支持 HNSW 索引和近似最近邻搜索。RAG 应用可以直接用它做向量检索。
- 许可证:增加了 AGPLv3 选项,算是"重回开源"。
Redis 8.6(2026)
8.x 系列的最新 STS 版本,带来几个实用功能:
- 流幂等性 :
XADD加上IDMPAUTO参数后,网络重试不会产生重复消息。对消息队列场景是救命级改进。 - 热键检测(
HOTKEYS):直接告诉你哪个 Key 被访问最频繁、占 CPU 最多,不用靠猜了。 - 智能逐出策略 :新增
volatile-lrm/allkeys-lrm,基于"最近修改时间"而不是访问频率,写密集型场景更好控制。 - TLS 证书自动认证:客户端证书直接映射为 Redis 用户,安全校验更丝滑。
二、重磅特性示例
Vector Set:AI 时代的原生数据结构
Redis 8.0 开始支持,命令很简单:
bash
# 添加一个二维向量,起个名字 pt:A
VADD points VALUES 2 1.0 1.0 pt:A
VADD points VALUES 2 0.9 0.8 pt:B
# 查一下 points 里有多少个向量
VCARD points
# 找与 (0.95, 0.85) 最相似的 2 个向量
VSIM points VALUES 2 0.95 0.85 COUNT 2 WITHSCORES
实际场景里维度可能是 768 或 1536,但用法一样。
流幂等性:Streams 再也不怕重复
Redis 8.6 给 XADD 加了新参数:
bash
# 传统写法:网络重试可能产生两条一样的消息
XADD orders * user_id 1001 amount 299
# 新写法:自动幂等,重复调用只会存一条
XADD orders IDMPAUTO user_id 1001 amount 299
HOTKEYS:热点问题一秒定位
bash
HOTKEYS 10
# 输出类似:
# 1) "user:session:10086" (hits: 15234, cpu_usage: 2.3%)
# 2) "cache:product:index" (hits: 10892, cpu_usage: 1.8%)
再也不用猜到底哪个 Key 把 Redis 打慢了。
三、协议那点事儿
3.1 协议时间线
- 2024 年 3 月之前:Redis 使用 BSD 3-Clause 协议,非常宽松。
- Redis 7.4 开始:换成 RSALv2 / SSPLv1 双许可,不再被 OSI 认可为"开源许可证"。
- Redis 8.0(2025 年 5 月) :在 RSALv2 和 SSPLv1 之外,新增 AGPLv3 选项。AGPLv3 是 OSI 批准的开源许可证,所以 Redis 官方说"我们重回开源了"。
- 同期 :Linux 基金会拉了一个分支 Valkey(基于 Redis 7.2.4),采用 Apache 2.0 许可,社区驱动。
3.2 这些协议限制了什么?
- RSALv2:禁止你把 Redis 作为一个"托管服务"提供给第三方。
- SSPLv1:要求如果你把 Redis 做成 SaaS 服务,必须公开整个服务管理层的代码。
- AGPLv3:如果你修改了 Redis 并通过网络分发,需要公开修改内容。
3.3 重点:自己部署 Redis,基本不用管这些
为什么?
因为上面那些限制,全都针对的是商业云厂商------比如 AWS、GCP、阿里云、腾讯云,它们把 Redis 打包成"Redis 托管服务"卖给用户。
而你如果是:
- 在自己的服务器上
make install - 用 Docker 跑
redis:latest - 在公司内网部署一个 Redis 给业务用
------这些行为既不是"托管服务",也不是"SaaS 分发",协议对你没有任何实际约束。你甚至不需要去读 RSALv2 的全文,因为它根本不会管到你。
唯一需要留意的是:如果你打算写一个商业产品,把 Redis 8.0+ 作为核心组件打包起来卖给客户,并且客户能直接通过网络使用你包装好的 Redis 服务------那可能需要咨询一下律师。但对绝大多数开发者来说,这离日常很远。
所以,放心玩你的 Redis 8.6 就行。
四、各版本支持状态(截至 2026 年 4 月)
下面的 EOL 日期主要来自 Redis 官方 Open Source 页面,LTS/STS 分类来自 Redis Cloud 官方策略。
这只是做信息参考,不是推荐向。
| 版本 | 当前状态 | EOL / 支持结束时间 | 备注 |
|---|---|---|---|
| 5.0 | 已 EOL | 2022 年左右 | 太老了,已经没人维护 |
| 6.2 | 支持中 | 2027 年 4 月 1 日 | LTS(按 Cloud 策略),但快到期了 |
| 7.2 | 支持中 | 2029 年 12 月 1 日 | LTS,BSD 协议最后一个大版本 |
| 7.4 | 支持中 | 2029 年 12 月 1 日 | STS,协议已切换 |
| 8.2 | 支持中 | TBD(预计 2029+) | 当前 LTS 版本 |
| 8.4 | 支持中 | TBD | STS 版本,功能更新快 |
| 8.6 | 支持中 | TBD | 最新 STS 版本 |
数据来源:
- Redis 官方 Open Source 文档(EOL 日期)
- Redis Cloud 文档(LTS/STS 定义)
- versionlog.com(第三方汇总)
五、总结
Redis 从 1.0 到 8.6,大概走了这么几条路:
- 1.x--2.x:打基础,数据结构 + Lua 脚本
- 3.x--5.x:分布式 + 流消息
- 6.x:多线程 I/O + ACL
- 7.x:脚本函数化 + 持久化优化 + 哈希字段过期
- 8.x:向量检索 + AI 原生 + 性能炸裂 + 协议重回开源
每个版本都有它诞生的背景和想解决的问题。
小小的温馨提醒:自己部署的话,别被协议吓到,该用就用。