
Redis 许可纠纷冷却两年后,2026 年的选择题更具体了:云厂商托管默认项、发行版软件源、以及 Harbor 这类基础设施组件,越来越多把 Valkey 写进“能直接换上”的路径。有人跑同负载对比吞吐和 P99,有人关心的是许可证和运维手册会不会再变一次。
我这边几套缓存的迁移结论很务实:协议兼容的部分比想象中大,运维习惯和模块生态的差异比 benchmark 截图大。 下面按“要不要迁、怎么迁、迁完盯什么”写。
现在各自站在哪
Valkey 是 Linux Foundation 旗下的 BSD-3 分支,云上 ElastiCache / Memorystore 一类服务里,新实例默认 Valkey 已经不稀奇。Redis 8 线则在功能上加码(向量集合、更细的 hash 字段 TTL、函数体系等),许可模型与社区分发路径和 7.2 BSD 时代不同。
对后端团队,这不是粉丝站队题,是三张表:
- 许可与采购:法务能不能接受当前 Redis 源码许可;容器基础镜像、Linux 发行版默认源跟谁。
- API 面:你们用的命令、模块、客户端是否在目标引擎上行为一致。
- 运维面:持久化、复制、故障转移、可观测指标名、备份工具是否还熟。
Harbor 在 2.15.2 把内部缓存后端切到 Valkey 的公开说明,价值主要在“容器生态默认选项在变”,不在证明所有业务缓存都该今天夜里切。
兼容:能 drop-in 的和不能的
大多数会话缓存、限流计数、分布式锁(若你用的是简单 SET/GET + 过期,而不是冷门模块)迁 Valkey 8.x 线时,客户端 URL 换主机名往往就能过集成测试。坑通常在边缘:
- 模块与扩展:依赖特定 Redis 模块、或只在某一边实现的数据结构,要逐条对表。
- 客户端假设:有的库写死了
INFO字段名、集群拓扑细节、或厂商专有命令。 - 持久化与复制参数:配置项同名不同默认值,RPO 会被悄悄改写。
- 多线程 / 内存分配:同规格机器上的 CPU 画像会变,自动扩缩阈值要重测,别只看官方 ops/s。
# 迁移前先冻结“真实命令画像”,比看业务文档准
# 在代理或 redis-cli MONITOR 采样(注意脱敏与耗时)
# 输出 top N 命令、key pattern、平均 value 大小
没有命令画像就迁,等于盲飞。我见过“只用了 String”的服务,实际还有 Lua 脚本依赖 replicate_commands 时代的行为,灰度时锁竞争形状全变。
图:缓存层从单引擎默认到双轨可切换

一种低戏剧性的迁移顺序
- 只读影子:旁路起一套 Valkey,用双写或流量镜像比对 GET 命中与空值比(注意隐私与放大写)。
- 无状态优先:验证码、页面碎片、API 响应缓存先切;会话与锁后切。
- 锁与队列单独验收:正确性测试比压测重要;超时、fencing token、续约逻辑用故障注入打一遍。
- 连接串与配置配置化:同一套应用通过配置中心切引擎,避免发版才能回滚。
- 观察指标对齐:命中率、逐出、内存碎片、复制延迟、慢日志——名字可能变,仪表盘先改再切流量。
回滚预案写清楚:DNS/代理权重怎么拨回、持久化文件要不要兼容、客户端连接池要不要重启。缓存层回滚通常比数据库快,前提是你没有在一周内写入大量“只在新引擎可解析”的数据结构。
成本与性能:别只贴一张柱状图
公开对比里常见叙事是 Valkey 在某些缓存负载上吞吐略好、尾延迟略低、同云托管单价更友好。这些数字对容量规划有参考,但你们的 key 长尾、pipeline 深度、大 value 比例一变,排名就翻。
更稳的做法:
- 用生产采样的 key 大小分布做回放,而不是 redis-benchmark 默认 3 字节 value。
- 看 P99/P999 和 CPU,不只看平均值。
- 把工程师时间算进去:团队文档、值班 runbook、备份脚本全是 Redis 专有名词时,切换有培训成本。
若业务已经深度绑定 Redis 8 的新类型(例如原生向量结构),迁 Valkey 可能变成功能回退;反之若你只是要一个 BSD 线、与发行版默认一致的缓存,Valkey 路径更省心。
和 Postgres、应用层的边界
缓存争论升温时,有人会说“热点就 Postgres + 好查询”。有道理,但不对称:缓存解决的是重复读与跨实例协调的延迟尖刺,不是关系模型。Valkey/Redis 仍适合:
- 秒级过期的热点键
- 简单限流与特征计数
- 协作编辑的 presence、短生命周期房间态
不适合继续塞进缓存的:唯一真相的订单状态、需要复杂事务的库存,以及“丢了就当面骂人”的数据。引擎换成谁都救不了错误的数据归属。
小结
2026 年选 Valkey 还是 Redis,先看许可与云默认项,再看命令画像和模块,最后才看谁的博客 benchmark 更亮。迁移按无状态到有状态、可配置切换、指标对齐的顺序走,比大晚上改连接串少事故。
我自己的默认:新服务若只要通用缓存语义,优先跟所在云的默认托管引擎(常常是 Valkey);已有复杂模块或明确要用 Redis 8 新能力的,就钉版本、钉镜像、把法务结论写进 ADR,避免半年后源变了没人认。


