
缓存层最近有个不太喧闹、但运维群里反复出现的词:Valkey。Harbor 在 2.15.2 把内部缓存后端换成 Valkey;欧洲云厂商新闻里,有的产品上线 Valkey KV 的同一天弃用 Redis 托管名;AWS / GCP 新实例默认也更常指向 Valkey。协议还是那套熟悉的 RESP,争论从“要不要 fork”变成了“新项目默认写谁、老集群怎么搬”。
Milvus、Workers 计费那些题前几天写过。今天只聊内存数据面:当你的服务仍然 GET / SET / LIST / pubsub 时,名字换了意味着什么。
为什么现在才集中迁移
故事大家听熟:Redis 源码许可变更后,云厂商与基础软件更倾向 BSD 路线的 Valkey(从 Redis 7.2.4 一带拉出的延续)。对业务团队,许可是触发器,真正推动排期的是:
- 托管产品目录改名或价格差(有对比称 Valkey 托管可比同类 Redis 托管明显便宜一截,以你账单为准);
- 依赖镜像、Helm chart、Operator 开始把 Valkey 当一等公民;
- AI 推理旁路(语义缓存、会话状态、限流计数)把“低延迟 KV”又推回架构图中心。
Valkey 官网博客甚至按推理栈横剖:语义缓存、KV cache offload、admission、可观测,各自映射到 list/json/ttl 等原语。结论不新鲜——慢的是磁盘真源,急的是内存契约——但说明生态叙事已经从“Redis 兼容替代”转到“AI 负载下的默认零件”。
兼容不是零成本
客户端大多仍用 redis 名字的库连 Valkey,这是好事,也是陷阱。你以为是换 endpoint,直到:
- 模块 / 扩展集合不一致(某些 Redis 模块在 Valkey 侧路径不同或没有);
- 管理命令、ACL 细节、复制与 cluster 运维手册分叉;
- 监控 dashboard 还在刮旧 metrics 名;
- 持久化与备份剧本按旧版 Redis 写死。
把迁移当成“DNS 切换”的团队,会在第一个故障夜把 DNS 切回去。
一条可执行的迁移顺序
我自己排期会按这个粗序,而不是先争论信仰。
1. 盘点调用,而不是盘点情怀
导出所有 key 前缀、命令热度、是否用 Lua、是否用 stream/pubsub、是否依赖多 key 事务与特定模块。能画成表最好:
| 前缀 | 数据结构 | TTL | 能否丢 | 高峰 QPS |
|---|---|---|---|---|
sess: |
hash/string | 短 | 否 | ... |
ratelimit: |
string/zset | 极短 | 可重建 | ... |
cache:api: |
string | 中 | 是 | ... |
可丢的缓存和不可丢的会话,迁移策略完全不同。
2. 双跑或影子流量
新 Valkey 集群与旧集群并行。应用层 feature flag:写双写、读旧;或代理层按比例把读切到新。对比:
- 命中率与 P99;
- 错误码(
MOVED/ASK、OOM、timeout); - 内存碎片与 eviction 是否按预期。
不要第一天就在大促槽位切主路径。
3. 会话与锁单独对待
缓存打穿可以回源。分布式锁和登录会话不行。锁的 key 要有清晰 owner 与 TTL;迁移窗口避免“旧集群上的锁,新集群上看不见”造成双主临界。必要时维护迁移窗口内的单集群权威,而不是假装双写锁能凑合。
4. 观测先换心
在切流量前:dashboard、告警、runbook 全部指向新集群。至少包括:内存、evicted keys、connected clients、blocked clients、复制延迟、命中率、hot key。切完才发现 Grafana 还在看旧实例,是经典乌龙。
5. 回滚剧本写短
一页纸:谁有权切回、DNS/配置中心改哪个键、预计 RTO、数据是否接受回滚丢失(缓存一般可以,会话要想清楚)。回滚演练比迁移演讲重要。
图:机房冷通道里整齐的金属机架与指示灯(纪实风格,与封面角度不同)

Postgres 能不能“顺便干掉缓存”
每隔一段时间就有文章说:队列、锁、pub/sub Postgres 也能做。小流量单体,真能少一个零件。但一旦:
- 需要亚毫秒级热键;
- 会话与限流和 DB 抢连接;
- 多语言服务共享同一份热状态;
内存数据面仍然省事。2026 年的务实组合常常是:Postgres(或湖仓)当真源 + Valkey 当热路径,而不是二选一站队。Valkey 替换的是“开源许可别扭的那一层 RESP 服务”,不是替换关系模型。
AI Agent 框架爱把会话和 tool scratchpad 放进 Redis 协议存储——换 Valkey endpoint 往往比改框架代码便宜。记得给 agent 状态设 TTL 与租户前缀,否则内存会变成无主考古现场。
许可与供应链
选型表上除了 benchmark,再加三列:许可证、发布频率、你用的模块是否 upstream。Fork 世界会再分叉;把业务绑在单一小众命令集上,下次迁移还痛。尽量停在通用数据结构 + 短 Lua,运维会谢谢你。
小结
Valkey 在 2026 年的出现感,来自托管默认项、许可路径和 AI 旁路负载,而不是某次微基准暴打。迁移成功与否,很少取决于 logo,而取决于:调用盘点、双跑对比、锁与会话策略、观测与回滚。
若你本周只做一件事:把生产 Redis/Valkey 上的前缀和命令热度导出成表,标出“可丢缓存”和“不可丢状态”。有了这张表,换引擎只是工程;没有这张表,换什么都像赌博。


