多年来,Redis 一直是开发者中最受欢迎的数据库技术之一。
Niantic、HackerRank、Airbnb、Hulu 和 OpenAI 等公司使用 Redis 来提高高流量事件期间的性能和可靠性,构建和整合统一数据平台,并支持可扩展的微服务环境。
2024 年,Redis 调整了其许可计划,免费提供 Redis Community Edition,并通过双源可用许可提供 Redis 源代码。作为回应,一些企业贡献者,如 Amazon AWS 和 Google Cloud,对 Redis 进行了分叉,并创建了 Valkey,一个 Redis 的开源替代品。
尽管目前 Redis 和 Valkey 之间存在显著重叠,但这两个组织拥有不同的团队和客户群。虽然它们都曾基于相同的代码,但它们在功能集、功能、能力、贡献者等方面已经开始分化。随着时间的推移,这种分化只会越来越大。
公司在比较两者时,需要考虑每个产品当前的状况,并审视每个产品迄今为止建立的先例和发展轨迹。
Valkey 是 Redis 版本 7.2.4 的开源分叉。Redis 和 Valkey 在本质上相似:两者都提供内存数据存储和缓存,开发者可以使用它在 RAM 中以键值对的形式存储数据,从而实现远远超过通过磁盘或固态驱动器访问数据的数据库的处理速度。
2024 年 3 月,Valkey 在 Linux 基金会的支持下发布;2024 年 9 月,Valkey 发布了Valkey 8.0,这是其对分叉的 Redis 代码最大的背离。随着时间的推移,这两个代码库将进一步分化。
正如 Valkey 的维护者 Kyle Davis 在 2024 年 4 月所说:“从现在开始,Redis 和 Valkey 是两个不同的软件。”
Valkey 与 Redis 一样,提供内存缓存,可实现高性能查询和低数据延迟。因此,Valkey 提供了一些相同的功能,适用于一些相同的用例。
然而,Valkey 缺乏 Redis 提供的所有功能——这些功能帮助开发者将 Redis 用作运营数据库。
Valkey 具有多种用例,对于需要低延迟或实时功能的组织特别有用。
会话缓存:Valkey 可以在客户端应用程序内存中缓存频繁访问的数据,从而实现更快的查询并减轻其他数据库的负载。例如,应用程序可以使用会话缓存来存储最近查看的文件,让用户更快地访问它们。
消息队列:Valkey 允许消息排队,以便组织可以按正确的顺序向不同的用户发送不同的消息。例如,如果组织正在构建通知系统,Valkey 将帮助它向特定通道和用户广播通知。
实时更新:Valkey 由于其高性能、低延迟的设计,可以支持需要实时更新的系统。如果一个电商商家需要一个数据库来处理高流量和高交易量,Valkey 可以支持实时库存更新,以便客户始终了解哪些产品可用。
像所有工具一样,Valkey 也有优缺点。比较 Valkey 和 Redis 的公司需要确定对其用例最重要的优缺点,并从宏观角度审视两者的产品,以做出明智的决定。
由于 Redis 和 Valkey 目前的重叠,一些价值主张是共享的。然而,随着 Valkey 8.0 的发布,出现了一些差异化功能。
例如,Valkey 8.0 增强了 I/O 多线程处理,将吞吐量提高到与企业级 Redis 提供的类似水平。Valkey 现在提供改进的多核利用率和异步 I/O 线程,其吞吐量比其前一版本提高了三倍以上。
Valkey 还包含实验性的远程直接内存访问(RDMA 支持),而 Redis 不原生支持此功能。RDMA 允许计算机通过直接访问彼此的内存来完成更高效的数据传输,具有低延迟和高带宽。
RDMA 支持可能意味着在从 RDMA 中受益的狭窄专业环境中实现更大的性能提升,但 Valkey 目前仅以实验级别支持此功能。
由于 Valkey 基于 Redis,因此组织在比较两者时需要考虑的主要缺点来自于 Redis 多年来运营中建立的先例,以及 Valkey 相对未经测试的特性。
功能对等:Valkey 基于 Redis 7.2.4,但由于 Valkey 是一个独立的组织,它不一定会及时跟进 Redis 的更新。Valkey 尚未支持的功能包括,Redis 已经提供了
再举一个例子,Redis 7.4 增加了使用 Redis 作为带有哈希字段过期功能的会话存储的能力,允许开发者解锁可搜索的会话,现在他们可以将其用于多值索引和任意深度的索引。
支持:Valkey 目前不提供运营支持,这是在不给公司开发者增加负担的情况下充分利用数据库工具的关键方式。
Percona 最近的一项研究表明,虽然许多组织正在评估 Valkey,但其中 76% 可能需要第三方企业支持才能运行它。相比之下,Redis 为开发者、企业和大型企业提供了强大的支持计划。
喜欢阅读和参考文档的开发者也会在Redis 文档网站上找到更广泛的信息。
客户端:大多数开发者使用客户端与 Redis 交互,例如 Jedis、node-redis、redis-py、NRedisStack 和 Go-Redis。
这些客户端是为 Redis 设计、开发和维护的,因此目前和将来与 Valkey 的兼容性(更不用说完整功能支持)无法保证。Redis 官方支持的客户端还确保了来自单一供应商的端到端服务、信任和持续支持。
开发者中的既有熟悉度:Valkey 仍然非常新,尚未在开发者中建立起 Redis 在多年运营中积累的熟悉度。
例如,在 StackOverflow 的2024 年开发者调查中,Redis 是最受欢迎的数据库之一。22.8% 的专业开发者表示在过去一年中与 Redis 进行了大量开发工作,67% 的开发者欣赏 Redis,28% 的用户表示在本次调查之后的一年内希望使用 Redis。
Mozilla.ai 的机器学习工程师 Vicki Boykis 在很大程度上表达了这种情感,她写道:“我热爱 Redis,这种忠诚度只留给我亲密的朋友、家人和春天真正的第一天,因为 Redis 是为我,为开发者而生的软件。”
2024 年,Redis 的原始创建者 Salvatore Sanfilippo(在开发者社区中更广为人知的名字是“antirez”)回归,担任布道师,并用他的话来说,成为“公司和社区之间的桥梁”。
他写道:“通过新许可证,焦点可以重新回到 Redis 核心上,让世界各地的开发者掌握新的、令人兴奋的功能。” Redis 的基础坚实,重点已重新确定,未来充满可能性。
Redis 和 Valkey 基于相同的代码,因此乍一看,两者之间的相似之处会很突出。从宏观来看,对于大多数寻找内存缓存的公司来说,两者都是不错的选择。
然而,Redis 提供 JSON、TimeSeries、概率性、通过 Redis Query Engine 进行搜索和查询、向量搜索、RedisGears 和 RedisConnect,所有这些功能结合起来帮助开发者将内存缓存转变为完整的数据库工具。例如,如果一家公司想构建一个键值数据库或存储,它就需要只有 Redis 才提供的这种独特功能集。
正如 RedMonk 的高级分析师 Rachel Stephens 所写:“Redis 受欢迎的一个原因是它的灵活性。虽然它最初是作为缓存设计的,但开发者也将其用作键值存储、数据库和消息队列。它已经成长为填充了各种细分市场。”
—*
对于希望构建和部署更快、更强大的应用程序的开发团队来说,Redis 仍然是一个流行、值得信赖且灵活的选择。立即免费试用。