☰

面向缓存、会话、实时数据场景的技术选型笔记。核心结论先行:先用"内存数据结构"和"分布式事务底座"做第一刀切分,再在内存赛道内部按协议、持久化、模块依赖和运维模型做排除法。

TL;DR

  • 新部署的内存 KV 默认从 Valkey 起步:BSD-3 + Linux Foundation 治理,生态最安全,性能已不劣于 Redis。
  • Redis 留给已深度绑定 RediSearch/RedisJSON/向量搜索的存量系统:AGPLv3 合规需法务确认,新项目没有优先选它的理由。
  • DragonflyDB 是"用运维模型妥协换单机吞吐极值"的第三条路:BSL 协议、无 AOF、无 Sentinel、模块缺失、Cluster 控制面外置,适合吞吐是第一瓶颈且能自建配套的缓存场景。
  • TiKV 不在同一赛道:分布式 ACID KV 底座,只在需要强一致事务和水平扩展至数十 TB 时进入视野。
  • KeyDB 不建议作为新选型:维护停滞,多线程优势已被 Valkey 吸收,仅作遗留过渡。

一、先认清:它们不是同一个"物种"

很多选型讨论会把 KeyDB、Redis、Valkey、DragonflyDB、TiKV 放进同一张表打分,这是有问题的。

Redis / Valkey / KeyDB / DragonflyDB 属于内存型数据结构存储,共享 RESP 协议,面向缓存、会话、排行榜、速率限制等低延迟场景。它们之间的差异主要在协议、线程模型、持久化粒度和生态兼容深度。

TiKV 属于分布式事务型键值数据库,面向需要 ACID、强一致多副本、水平扩展至数十 TB 的持久化数据底座。它不覆盖 RESP 生态,不是"更可靠的 Redis"。

把 TiKV 当缓存用,会引入完全不必要的 Raft 复制和 PD 调度复杂度;把 Redis 协议族当核心账务库用,则会在一致性和持久性上暴露风险。

二、结论矩阵

方案开源协议核心架构性能位置(单实例)生态兼容深度运维模型一句话定位
ValkeyBSD-3-Clause多线程 I/O + 单线程命令执行中高,已超越 Redis 同期最深:协议、RDB/AOF、Sentinel、Cluster、发行版默认标准 Redis 运维体系新部署的生态安全默认值
RedisRSALv2/SSPLv1/AGPLv3单线程命令执行 + I/O 线程基线最深 + 模块:RediSearch/JSON/向量标准 Redis 运维体系模块深度绑定时的留守选项
DragonflyDBBSL 1.1(远期转 Apache 2.0)Shared-nothing 多线程,单机纵向扩展最高:官方基准约为 Redis 的 10–12 倍浅–中:RESP 兼容,但模块、AOF、Sentinel、Cluster 治理有缺口自有体系:无 AOF、无 Sentinel、集群控制面需外部编排单机吞吐极值换取运维模型妥协
TiKVApache-2.0Raft + MVCC 分布式事务不同赛道(约 18–21 万 QPS/节点)不覆盖 RESP 生态PD + Raft 分布式运维分布式 ACID KV 底座
KeyDBBSD-3-Clause多线程已被 Valkey 覆盖收缩中遗留体系过渡选项,不作新选型

三、开源协议:不是"是否开源",而是"法务能不能签字"

这是 2024 年以来 Redis 生态分化的起点,也是企业选型最容易卡住的一环。

Redis:三重许可,AGPLv3 是开源但仍有门槛

Redis 在 2024 年 3 月从 BSD-3 切换到 RSALv2/SSPLv1 双许可;2025 年 5 月 Redis 8.0 又加入 AGPLv3,形成三重许可。AGPLv3 是 OSI 认可的开源协议,所以"Redis 完全不开源"的说法已不准确。但 AGPLv3 是强著佐权协议:如果修改源码并以网络服务形式对外提供,可能被要求公开修改。对法务流程严格、明确排斥 AGPL 的企业,Redis 8 在"开源定义"上回归了,但合规门槛并没有消失。

Valkey:当前 BSD 阵营最干净的选项

Valkey 在 Linux Foundation 下以 BSD-3-Clause 治理,没有单一厂商可以单方面变更许可。对于明确排斥 AGPL/SSPL 的企业,Valkey 几乎是唯一不触发额外法务评审的 Redis 兼容选项。

DragonflyDB:源码可得,但不是 OSI 开源

DragonflyDB 采用 BSL 1.1,官方明确将其描述为"source available",承认它"不是严格意义上的开源许可证"。核心约束是:可以自由使用、修改和自托管,但不能将 DragonflyDB 本身作为托管服务对外售卖。对绝大多数自用型企业,实务约束可能不构成障碍;但 BSL 不是 OSI 认可的开源协议,且转换日期存在不确定性。法务严格的企业需要单独走一轮审批。

KeyDB 与 TiKV

KeyDB 采用 BSD-3,协议本身没问题,问题在维护。TiKV 采用 Apache-2.0,是最宽松、对企业最友好的协议之一,且 CNCF 毕业项目治理成熟——但协议优势只在你确实需要分布式事务 KV 时才有意义。

本维度结论:法务对 AGPL 敏感时,Valkey 和 TiKV 是安全区;Redis 仅在已深度使用其模块且法务接受 AGPLv3 时留守;DragonflyDB 的 BSL 需要单独合规评审;KeyDB 的障碍不在协议,在维护。

四、性能:先问"在什么约束下比"

脱离工作负载谈 QPS 排名没有工程意义。这几个方案的性能差异,本质来自架构取向的分野。

Valkey vs Redis:小幅但一致的优势

2026 年多组基准显示,Valkey 8.1+ 在同等硬件上吞吐高出 Redis 约 8%,P99 延迟低约 22%,内存占用低约 20%;流水线场景下 Valkey 9.0.3 约 146 万 ops/s,Redis 约 118 万 ops/s。AWS 托管环境报告的提升幅度更大,但自托管场景下 8%–20% 量级更具参考性。Valkey 的收益主要来自多线程 I/O,命令执行模型仍是单线程。

DragonflyDB:数量级优势,但比较框架要校准

DragonflyDB 官方基准中,HSET 单实例吞吐达到约 799 万 ops/s,同期 Valkey 约 70 万 ops/s、Redis 约 64 万 ops/s,相对 Redis 约 12.5 倍;P50 延迟 0.507ms,而 Valkey/Redis 在 6.5–6.8ms 量级。RPUSH 场景下 DragonflyDB 约 599 万 ops/s,Valkey 约 89 万 ops/s,Redis 约 70 万 ops/s。

这些数字需要放在正确框架中读:DragonflyDB 的吞吐来自 shared-nothing 多线程架构,每个线程拥有 keyspace 子集,大多数操作无跨线程锁,能真正吃满多核。Redis/Valkey 的基线仍是单线程命令执行。所以"10×+“比较的本质上是一个单线程引擎与多线程引擎在多核硬件上的差距,不意味着所有场景都能以 1/10 机器数量交付同等服务,而是说明在吞吐瓶颈明确落在单核命令执行时,它有能力用更少节点达到更高总吞吐。

DragonflyDB 的收益在连接密集、pipeline 较深、命令轻量的缓存型负载中最直接。Agoda 的生产案例:1.5 TB 数据集、约 150 万写/秒 + 30 万读/秒,P99 读延迟约 8ms,架构从 72 分片 SQL Server 简化为少数 DragonflyDB 节点。

KeyDB 的历史优势已消失

KeyDB 在 2019 年以"多线程 Redis"出道时确有 2–5 倍于同期 Redis 的吞吐,但那是 Redis 尚未引入 I/O 多线程的时代。到 2026 年,Valkey 已吸收多线程思路,而 KeyDB 缺乏更新,实际基准中 KeyDB 在流水线场景反而落后。为多线程性能而选 KeyDB 的理由已基本消失。

TiKV:不要用 Redis 的尺子量

TiKV 单节点 32C64G 在并发 1000 时约 18.2 万 QPS、P99 12ms;并发 5000 时约 21.5 万 QPS、P99 28ms。这个数字放在 Redis 族语境下显得"不高”,但 TiKV 每次写入都经过 Raft 复制和持久化,交付的是强一致和 ACID,而不是内存缓存的极致延迟。

五、生态兼容性:“drop-in"的边界比连接串更深

RESP 兼容性让 Redis/Valkey/KeyDB 之间的迁移在协议层几乎无感,但生态厚度的差异体现在协议之外。

Valkey:生态已形成自增强循环

主流客户端库无需修改即可连接;RDB/AOF 格式与 Redis 7.2 兼容;Kubernetes Operator、监控 exporter、托管服务选项都在向 Valkey 收敛。遇到问题时的人才可得性、社区答案、运维手册覆盖度都在向 Valkey 倾斜。对企业使用,这比跑分更重要。

Redis:生态最深,但存在模块锁定

如果依赖 RediSearch、RedisJSON、向量搜索或 Redis Enterprise 的 active-active 地理分布,Valkey 并不覆盖这些能力。Redis 8 已将这些模块整合进核心发行版,留守 Redis 的工程理由成立。但需要清醒:你留守的是一个单一厂商治理、AGPLv3 合规需法务确认的生态。

DragonflyDB:协议层 drop-in,能力层有条件兼容

DragonflyDB 兼容 RESP2/RESP3,基础数据类型完全兼容,200+ Redis 命令已实现。简单缓存场景改连接串可以跑起来。但边界在高级特性处迅速收窄:

  • Redis 模块:不支持 RedisJSON、RediSearch、RedisTimeSeries、RedisGraph。
  • Lua 脚本:部分兼容,使用 redis.call 进阶 API 的脚本可能需要改写。
  • 持久化:不支持 AOF,仅快照。两次快照之间的写入在故障时存在丢失窗口。
  • 高可用:使用自有 replication,不支持 Sentinel。已有 Sentinel/Operator HA 体系需要重建。
  • 集群模式:核心取向是单机纵向扩展;多节点集群存在,但不提供自管理控制面,节点健康监控和故障转移需外部编排,多分片集群仅支持 database 0,多键操作要求同 slot。

本维度结论:DragonflyDB 是"协议层 drop-in,能力层有条件兼容”。简单缓存迁移成本低;一旦触及模块、AOF、Sentinel、自管理 Cluster 中任何一项,迁移就从"改连接串"变成"改架构"。

TiKV:另一个生态

TiKV 提供 gRPC 接口,与 TiDB 深度集成,在 CNCF 云原生体系中有位置,但不覆盖 RESP,不兼容 Redis 客户端。选择 TiKV 意味着应用需要针对其事务 API 开发,或通过 TiDB 以 SQL 访问。

KeyDB:生态收缩

工具链支持度下降、社区活跃度走低,使用中遇到的兼容性问题更难获得及时帮助。除非组织已有 KeyDB 运维经验和内部知识库,否则新引入的生态风险显著。

六、使用规模与维护信号:KeyDB 已不在牌桌

开源基础设施选型中,维护信号比当前功能清单更重要。停滞项目不会立刻失效,但会在未来 12–24 个月把安全补丁、兼容适配和人才招聘成本转嫁给你。

Valkey 的规模增长是结构性的:Docker 拉取量超过 1 亿,每周约 100 万次;AWS、Google Cloud、Oracle 托管缓存服务将其作为新集群默认引擎;Fedora、Ubuntu、Debian、Arch 等发行版将 redis-server 包指向 Valkey。Snap 在 2026 年上半年将 70% 的 Redis 集群迁移至 Valkey,日请求约 50 亿次,缓存支出从每年 210 万美元降至 84 万美元,应用逻辑无需重写。

KeyDB 的 GitHub 仓库自约 2024 年 4 月以来无提交,社区已有"是否废弃"的公开讨论。Snap 内部仍在某些场景使用,但不等于会持续为外部用户提供及时维护。

DragonflyDB 有真实重量级生产案例:Agoda、ShareChat(150+ 服务迁移,成本降低 40%)、Redbus(约 90% 缓存集群迁移)。这证明其在高吞吐缓存负载上生产可用。但"有生产案例"和"生态厚度足以作为默认选项"是两件事:DragonflyDB 是单一厂商治理,社区规模更小,边缘兼容问题的公共知识库和第三方工具链覆盖远不如 Valkey。使用中踩坑后填坑的成本更高。

TiKV 作为 CNCF 毕业项目,长期存续确定性较高,但采用主要围绕 TiDB 生态和对分布式事务有刚需的基础设施团队,不会成为"通用 KV"的事实标准。

七、场景化选型路径

把以上维度收束为可操作的判断:

1. 简单缓存/会话/排行榜,追求生态安全和协议确定性 → Valkey

当前新自托管部署的事实默认选项。BSD-3 + Linux Foundation 治理消除协议反复风险,性能不劣于甚至优于 Redis,标准 Redis 用法迁移成本接近于零。

2. 已深度依赖 RediSearch/RedisJSON/向量搜索,法务接受 AGPLv3 → Redis

不要为"协议洁癖"拆掉稳定运行的模块依赖。但新项目若未绑定这些模块,没有理由优先选 Redis 而非 Valkey。

3. 吞吐是第一瓶颈、工作集可纵向扩展、能自建配套 → DragonflyDB

适合连接密集、pipeline 较深的缓存型负载;数据集不超过单机多 TB 内存时,可显著减少节点数量和集群复杂度。使用验证重点不是跑分,而是逐项验证 Lua 脚本、持久化要求、HA 切换流程和客户端行为。需要接受 BSL 协议、无 AOF、无 Sentinel、模块缺失、Cluster 控制面外置这一组取舍。

4. 需要 ACID 事务、强一致多副本、数十 TB 水平扩展 → TiKV

典型归宿是作为 TiDB 存储层,或自研分布式数据库的底层 KV 引擎。如果只是想要"更可靠的 KV",先确认需求是否真的超出 Valkey 持久化 + 主从复制所能覆盖的范围;不超出的话,PD 集群、Raft 调度和 NVMe 硬门槛带来的复杂度大概率超过收益。

5. 需要跨区域多主写入且能接受维护风险 → KeyDB 仅作遗留过渡

active-active 复制是少数仍具差异化的能力。但新引入 KeyDB 的决策在 2026 年很难通过"长期可维护性"这一关。

6. 需要成熟自管理 Cluster、Sentinel、Operator 集成 → Valkey/Redis Cluster 优于 DragonflyDB

DragonflyDB 的多节点集群需要外部控制面,存在 slot 约束和多 DB 限制,不适合作为"开箱即用的分布式缓存集群"引入。

八、企业内使用验证清单

无论最终候选是哪一个,落地前建议逐项过一遍:

  1. 协议合规:法务确认许可条款(尤其 Redis 的 AGPLv3、DragonflyDB 的 BSL 1.1)在本企业使用方式下是否可接受。
  2. 客户端矩阵:列出在用语言的所有客户端库版本,逐个连接测试基本命令、pipeline、pub/sub、Lua。
  3. 数据结构与命令覆盖:把业务实际用到的命令清单跑一遍,特别关注 Lua 脚本、事务(MULTI/EXEC)、Stream、HyperLogLog 等高级特性。
  4. 持久化演练:验证 RDB/AOF 配置、故障恢复流程和实际丢数据窗口,与业务 RPO 对齐。
  5. HA 切换演练:Sentinel/Cluster/Operator 的主从切换、脑裂行为、客户端重连策略,按生产拓扑实测。
  6. 性能基线:用真实业务负载(而非通用跑分)在目标硬件上建立基线,对比候选方案。
  7. 可观测性:确认 exporter、慢日志、大 key 分析等运维工具链在候选方案上可用。
  8. 退出成本:评估迁移回退路径——数据导出格式、双写方案、协议兼容范围。

选型不是一次性决策。把上述清单固化为团队的使用验证 SOP,任何新 KV 组件进入生产前都走一遍,才能在生态快速变化的 Redis 后时代保持主动权。