Redis 版本演进、新特性与协议那些事儿

前言

Redis 每个版本都有自己的脾气,有的适合稳扎稳打,有的适合尝鲜,有的为了适应 AI 。

这篇文章的目标是:扒一扒每个版本的核心变化、好玩的新命令、协议许可证的来龙去脉

另外,如果你是自己下载 Redis 源码编译、或者用 Docker 跑在服务器上,那后面提到的那些许可证问题------基本跟你没啥关系。协议限制主要针对的是云厂商把 Redis 打包成托管服务卖钱。你自己用,该咋用还咋用。

一、Redis 成长简史(1.0 → 8.6)

奠基时代(1.0 -- 2.8):比 Memcached 聪明一点点

Redis 1.0(2010)

那时候 Redis 还是个"有点想法的缓存"。Memcached 只能存不透明的字节块,Redis 能存字符串、列表、集合,而且可以在服务端直接操作。

比如 LPOPSADD,少了好几次网络往返。1.1 还顺手加了 AOF 持久化,数据没那么容易丢。

Redis 2.0(2011)

引入了哈希和有序集合(Sorted Set) 。有序集合是 Redis 最经典的设计之一:每个元素带一个分数,按分数排序,ZRANGEZRANK 能干很多事。后来的排行榜、限流器、延迟队列,都靠它。

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)

这个版本带了一个呼声很高的功能:哈希字段过期HEXPIREHEXPIREAT)。以前整个 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 原生 + 性能炸裂 + 协议重回开源

每个版本都有它诞生的背景和想解决的问题。

小小的温馨提醒:自己部署的话,别被协议吓到,该用就用

相关推荐
devilnumber2 小时前
java中Redisson ,jedis,Lettuce和Spring Data Redis的四种深度对比和优缺点详解
java·redis·spring
鬼蛟2 小时前
Nacos
数据库·redis·缓存
倔强的石头_2 小时前
NFS网络文件系统下企业级数据库安装排障实战:环境变量失效与权限问题的深度解析
数据库
Linux运维技术栈2 小时前
Cloudflare Argo Smart Routing全球加速:优化跨境回源链路,提升跨区域访问体验
大数据·前端·数据库
2402_854808372 小时前
CSS如何实现元素在容器内居中_利用margin-auto技巧
jvm·数据库·python
weixin_580614002 小时前
html标签怎么表示用户输入_kbd标签键盘快捷键标注【介绍】
jvm·数据库·python
m0_716430072 小时前
如何监控集群 interconnect_ping与traceroute验证心跳通畅.txt
jvm·数据库·python
m0_678485452 小时前
如何通过 curl 调用 Go 标准库 RPC 服务(JSON-RPC 协议)
jvm·数据库·python
码农阿豪2 小时前
一次 AI 调用 15 万 Token 只花了 $0.058?彻底搞懂 Token、缓存读、补全计费机制!(附完整架构图)
人工智能·spring·缓存