2024 年 3 月 Redis 改许可证后,Linux Foundation 牵头 AWS/Google/Oracle 推出了 Valkey 这个 fork。两年过去,2026 年这个生态已经基本尘埃落定——Valkey 成了新项目的默认选择,老项目也在陆续迁移。这篇是最近折腾完两个项目后的总结。

一、为什么要关心

2024 年 3 月 20 日,Redis Inc. 把 Redis OSS 从 BSD 改成了 SSPL + RSALv2 双许可。SSPL 要求任何托管 Redis 服务的厂商开源其整个服务栈,这直接挡了 AWS、Google Cloud、Oracle 这些云厂的路。

7 天后,Linux Foundation 联合上述几家正式推出 Valkey,由前 Redis 核心维护者 Madelyn Olson 主导。2025 年 5 月 Redis Inc. 又改回 AGPLv3,但生态回不去了——AWS ElastiCache、Google Memorystore、Fedora 42、Ubuntu 26.04 LTS、Debian 13 backports、Arch community 都默认 Valkey 了。

简单说:“Redis” 这个词现在有歧义了,得问清楚你跑的是哪个。

二、性能实测:2026 年真实数据

下面三组数据都来自第三方独立测试,不是厂商宣传。

1. 单节点吞吐(r6g.large,1KB SET,Percona Toolkit 2025)

项目Valkey 8.1Redis OSS 8.0Valkey 领先
吞吐(ops/sec)1.20M1.11M+8%
P99 延迟1.8 ms2.3 ms−22%
内存占用基线+20%−20%

来源:Percona Toolkit 基准(2025)

2. 多线程 I/O 对比(Valkey 8+ 新特性)

测试场景Redis 8.0Valkey 8.1 / 9.0Dragonfly 1.x
GET(16 vCPU)~500K RPS~700K RPS~2.5M RPS
SET(16 vCPU)~450K RPS~600K RPS~2.2M RPS
GET pipeline=30(48 vCPU)~2M RPS~3M RPS~15M RPS
SET pipeline=30(48 vCPU)~1.5M RPS~2M RPS~10M RPS
每 key 内存基线−20~30 字节−38%(vs Valkey)

来源:centminmod/redis-comparison-benchmarks、Valkey 8.0 announcement、Dragonfly GCP benchmark

3. VPS 实测(4 核,1M keys,混合负载)

引擎吞吐p50p99RSS
Redis 8.0158K ops/s0.41 ms1.2 ms148 MB
Valkey 9.0.2172K ops/s0.38 ms1.1 ms132 MB
Dragonfly 1.x410K ops/s0.34 ms1.4 ms118 MB
KeyDB 6.3.4265K ops/s0.45 ms1.8 ms156 MB

来源:cloudhostreview.com 2026 实地测试

三、核心差异

1. 许可证

Valkey 8.1+Redis 8.2+
许可证BSD-3-Clause(永久)Dual BSLLv1 + AGPLv3
治理Linux Foundation(中立)Redis Inc.(商业)
商业托管✅ 无限制⚠️ 受限
云厂支持AWS/Google/Oracle/Snap/EricssonRedis Inc. 自营
主版本8.1(2025-03-31 发布)8.2(2026-02-17 GA)

Fedora 42、Ubuntu 26.04 LTS、Debian 13 backports、Arch community 都默认 Valkey——这是生态真实选择的标志。

2. 协议层 100% 兼容

好消息:RDB 和 AOF 文件在 7.2 格式下双向互通。

  • 所有客户端库零改动:ioredis、redis-py、Jedis、go-redis、node-redis、StackExchange.Redis、Lettuce
  • RESP2 和 RESP3 都支持
  • redis-cli 可以连 Valkey,valkey-cli 可以连 Redis
  • Lua 脚本 redis.call() 在 Valkey 里也可用

3. Redis 8.0+ 的”独有”特性

Redis 8.0 把以前分开的模块都收进核心了:

特性Redis 8.0Valkey 8.1+
Vector Sets(HNSW)✅❌(Valkey 模块生态逐步补)
Hash Field TTL✅❌
JSON Path 查询✅❌
Redis Functions 2.0(Lua + WASM)✅❌

关键判断:如果你依赖 RediSearch / RedisJSON / RedisTimeSeries / Vector Sets,Redis 8 仍然有意义。否则就是无脑 Valkey。

四、迁移步骤(4 步无缝切换)

Step 1:审计现有 Redis

1
2
3
4
5
6
7
8
9
10
11
12
# 看版本
redis-cli INFO server | grep redis_version

# 看模块(决定能不能直接迁)
redis-cli MODULE LIST

# 看内存和数据量
redis-cli INFO memory | grep -E "used_memory_human|maxmemory"
redis-cli DBSIZE

# 看 Lua 脚本里有没有用到 Redis 8 私有模块命令
grep -rn "FT\.\|JSON\.\|TS\.\|VADD\|VSIM" /your/codebase/

红线:如果 grep 出 RedisJSON/RediSearch/RedisTimeSeries/Vector Set 命令,直接迁移不行,要么等 Valkey 模块成熟,要么继续留在 Redis。

Step 2:安装 Valkey

Ubuntu 24.04+/Debian 13 已经原生支持:

1
2
3
4
5
6
7
8
9
# 直接装
apt install valkey

# 或者从 Valkey 官方仓库(更稳)
curl -fsSL https://packages.valkey.io/valkey-key.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/valkey-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/valkey-archive-keyring.gpg] https://packages.valkey.io/deb $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/valkey.list
sudo apt update && sudo apt install valkey

装完得到 valkey-server、valkey-cli、valkey-benchmark——和 Redis 套件一一对应。

Step 3:迁移数据(两种方法选一种)

方案 A:基于复制的零停机迁移(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 在 Redis 旁启动 Valkey(先用不同端口)
valkey-server --port 6380 --replicaof 127.0.0.1 6379

# 2. 监控同步状态(等 master_link_status=up,master_sync_in_progress=0)
valkey-cli -p 6380 INFO replication | \
grep -E "master_link_status|master_last_io_seconds_ago|master_sync_in_progress"

# 3. 验证数据一致
redis-cli DBSIZE && valkey-cli -p 6380 DBSIZE

# 4. 提升 Valkey 为主,停止复制
valkey-cli -p 6380 REPLICAOF NO ONE

# 5. 应用层切连接(几秒到几十秒,看健康检查策略)
# 然后停 Redis

方案 B:RDB 文件法(接受短暂中断)

1
2
3
4
5
6
7
8
9
10
11
12
# 1. Redis 端做一次 Redis dump
redis-cli BGSAVE && redis-cli LASTSAVE
# 等 /var/lib/redis/dump.rdb 时间戳更新

# 2. 拷贝 dump 到 Valkey 目录
systemctl stop valkey
cp /var/lib/redis/dump.rdb /var/lib/valkey/dump.rdb
chown valkey:valkey /var/lib/valkey/dump.rdb
systemctl start valkey

# 3. 验证
valkey-cli DBSIZE

Step 4:切割流量

1
2
3
4
5
6
7
8
# 停 Redis
systemctl stop redis

# 把 Valkey 端口改成 6379(如果之前用 6380 跑的)
sed -i 's/^port 6380/port 6379/' /etc/valkey/valkey.conf
systemctl restart valkey

# 应用层连接字符串改成新 host:port(一般就是改回去,零代码改动)

⚠️ Valkey 兼容性的边界

  1. Redis 7.4+ Community 用了不同的 replication 格式,与 Valkey 不互通。要迁必须先降级到 Redis 7.2.x
  2. INFO server 会报 valkey_version 而不是 redis_version,监控告警规则可能挂掉,要改 key
  3. /etc/redis/redis.conf 路径要改成 /etc/valkey/valkey.conf
  4. systemd unit 名字要从 redis-server 改到 valkey-server
  5. CLI 工具 旧名 redis-cli / redis-benchmark 都能用,但建议换 valkey-cli / valkey-benchmark

五、生产案例

Snap Inc.(Snapchat 母公司):2026 年上半年把 70% 的 Redis 集群迁到了 ElastiCache Valkey。结果:

  • 缓存基础设施成本下降 60%
  • 年支出从 $2.1M → $840K
  • 同时还在服务 5B 每日请求
  • 综合节省 = AWS 价格下调 + Valkey 内存效率 + 移除 Redis Inc. 商业许可

Pinterest 也走类似路径,迁移后 P99 改善 22%、成本下降约 30%。

六、到底怎么选

你的情况推荐
新项目 / 绿地基础设施✅ Valkey(默认选择)
老 Redis 7.2 集群,跑的是标准数据结构✅ 迁移 Valkey(基本无成本)
老 Redis,依赖 RediSearch / RedisJSON / RedisTimeSeries⚠️ 评估 Valkey 模块成熟度,或留在 Redis
Redis Enterprise 客户(多活 CRDB 复制)⚠️ 继续 Redis Enterprise(短期 Valkey 没替代)
已经在用 Dragonfly / KeyDB⚠️ 这些是 Redis 的另一类 fork(不是 license fork,是性能 fork),各自定位不同

七、一句话总结

2026 年的新项目:默认 Valkey,除非你明确需要 Redis 8 的私有模块。
老 Redis 项目:迁移难度远低于你想象的——4 步、零代码改动、内存和性能都有改善。

Snap 迁移 70% 集群年省 126 万美元——这数字应该够你跟老板汇报了。

站内搜索

没有找到内容!