dot Redis 8 已发布——而且它是开源的

了解更多

Valkey 是什么?

多年来,Redis 一直是开发者中最受欢迎的数据库技术之一。

Niantic、HackerRank、Airbnb、Hulu 和 OpenAI 等公司使用 Redis 来提高高流量事件期间的性能和可靠性,构建和整合统一数据平台,并支持可扩展的微服务环境。

2024 年,Redis 调整了其许可计划,免费提供 Redis Community Edition,并通过双源可用许可提供 Redis 源代码。作为回应,一些企业贡献者,如 Amazon AWS 和 Google Cloud,对 Redis 进行了分叉,并创建了 Valkey,一个 Redis 的开源替代品。

尽管目前 Redis 和 Valkey 之间存在显著重叠,但这两个组织拥有不同的团队和客户群。虽然它们都曾基于相同的代码,但它们在功能集、功能、能力、贡献者等方面已经开始分化。随着时间的推移,这种分化只会越来越大。

公司在比较两者时,需要考虑每个产品当前的状况,并审视每个产品迄今为止建立的先例和发展轨迹。

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 的主要特性

Valkey 与 Redis 一样,提供内存缓存,可实现高性能查询和低数据延迟。因此,Valkey 提供了一些相同的功能,适用于一些相同的用例。

  • 性能:由于 Valkey 和 Redis 一样是内存数据存储,因此它的查询速度比传统数据库快得多。
  • 复制:Valkey 提供主副本复制,这意味着组织可以将数据从 Valkey 服务器复制到副本服务器。
  • 集群:Valkey 集群可以扩展到 1000 个节点,使 Valkey 数据库能够进行故障转移,即使某些节点发生故障也能保持运行。
  • 数据结构支持:Valkey 支持一系列不同的抽象数据结构,包括字符串、列表、映射、集合、有序集合、HyperLogLog、位图、流和地理空间索引。

然而,Valkey 缺乏 Redis 提供的所有功能——这些功能帮助开发者将 Redis 用作运营数据库。

Valkey 有什么用途?

Valkey 具有多种用例,对于需要低延迟或实时功能的组织特别有用。

会话缓存:Valkey 可以在客户端应用程序内存中缓存频繁访问的数据,从而实现更快的查询并减轻其他数据库的负载。例如,应用程序可以使用会话缓存来存储最近查看的文件,让用户更快地访问它们。

消息队列:Valkey 允许消息排队,以便组织可以按正确的顺序向不同的用户发送不同的消息。例如,如果组织正在构建通知系统,Valkey 将帮助它向特定通道和用户广播通知。

实时更新:Valkey 由于其高性能、低延迟的设计,可以支持需要实时更新的系统。如果一个电商商家需要一个数据库来处理高流量和高交易量,Valkey 可以支持实时库存更新,以便客户始终了解哪些产品可用。

Valkey 的优缺点

像所有工具一样,Valkey 也有优缺点。比较 Valkey 和 Redis 的公司需要确定对其用例最重要的优缺点,并从宏观角度审视两者的产品,以做出明智的决定。

Valkey 的优点

由于 Redis 和 Valkey 目前的重叠,一些价值主张是共享的。然而,随着 Valkey 8.0 的发布,出现了一些差异化功能。

例如,Valkey 8.0 增强了 I/O 多线程处理,将吞吐量提高到与企业级 Redis 提供的类似水平。Valkey 现在提供改进的多核利用率和异步 I/O 线程,其吞吐量比其前一版本提高了三倍以上。

Valkey 还包含实验性的远程直接内存访问(RDMA 支持),而 Redis 不原生支持此功能。RDMA 允许计算机通过直接访问彼此的内存来完成更高效的数据传输,具有低延迟和高带宽。

RDMA 支持可能意味着在从 RDMA 中受益的狭窄专业环境中实现更大的性能提升,但 Valkey 目前仅以实验级别支持此功能。

Valkey 的缺点

由于 Valkey 基于 Redis,因此组织在比较两者时需要考虑的主要缺点来自于 Redis 多年来运营中建立的先例,以及 Valkey 相对未经测试的特性。

功能对等:Valkey 基于 Redis 7.2.4,但由于 Valkey 是一个独立的组织,它不一定会及时跟进 Redis 的更新。Valkey 尚未支持的功能包括,Redis 已经提供了

  • JSON:开发者常用于构建现代应用程序的数据结构,包括用于摄取、索引、查询和对 JSON 文档进行全文搜索的原生 API。
  • 时间序列:摄取和查询数百万个样本和事件,以支持物联网和遥测等时间序列用例。
  • 概率性去重:通过更高效的数据处理和整洁的数据来改善用户体验。
  • 通过 Redis 查询引擎进行搜索和查询:使用 Redis 作为文档数据库、向量数据库、二级索引和搜索引擎,具有一系列搜索和查询功能,包括丰富的查询语言和聚合。
  • 向量数据库搜索:通过高性能的向量搜索支持检索增强生成 (RAG) 工作流和生成式 AI 用例。
  • Redis 数据集成:自动将 Redis 与您的记录系统 (SOR) 同步,以获得实时、最新的数据,无需手动管道的复杂性。
  • ODBC:轻松与可视化框架和商业智能平台集成。
  • 智能缓存:通过此开源库,将缓存无缝添加到任何符合 JDBC 的平台、应用程序或微服务中。
  • Redis Insight:借助 AI 驱动的 Redis Copilot,分析跨所有操作系统和 Redis 部署的 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 分叉 (Valkey, Redict 等)
Redis Community Edition
(Redis 8)
Redis Software
构建
作为缓存提升应用性能
完全持久化和耐用性
带有哈希字段过期 (HFE) 的高级会话管理
自动摄取源数据库(包括 Oracle、Postgres、MySQL 等)并捕获变更数据 (CDC)
使用可扩展的高级查询和搜索操作构建实时应用
无需序列化或外部处理的内置 JSON 支持
用于高效存储和查询带时间戳数据的内置时间序列支持
用于内存高效近似计算的概率数据结构(布隆过滤器、top-k、t-digest 等)
通过为 Spring、ASP.NET Core、FastAPI 和 Express 提供的开箱即用对象映射库实现快速开发
通过特定语言的 Redis 客户端库实现端到端支持,例如 Jedis、Lettuce、redis-py、redisVL、NRedisStack、node-redis 和 go-redis
Redis Insight 用户界面,包括教程、辅助工具和查询构建器
部署
完全支持本地部署、云端部署或混合环境部署

—*

在任何云或多云上的自动化部署
通过 Redis Flex 使用 SSD 存储扩展内存容量
运行
使用 Redis Data Integration 实时摄取来自外部数据库的数据,将慢速数据转换为实时数据
使用地理分布式(主备)数据存储在全球范围内提供一致的实时客户体验
自动化数据库和集群管理(扩展、重新分片、重新平衡)
内置高可用性和灾难恢复管理
Redis 专家提供的企业级客户支持
安全
用于数据访问的访问控制列表 (ACL) 和基于角色的访问控制 (RBAC)
用于控制平面的基于角色的访问控制 (RBAC)
集中式 RBAC 管理
连接和认证审计
支持 HashiCorp Vault

对于希望构建和部署更快、更强大的应用程序的开发团队来说,Redis 仍然是一个流行、值得信赖且灵活的选择。立即免费试用

Redis 分叉(Valkey, Redict 等)RedisCommunity Edition(Redis 8)Redis Software
构建作为缓存提升应用性能
完全持久化和耐用性
带有哈希字段过期 (HFE) 的高级会话管理
自动摄取源数据库(包括 Oracle、Postgres、MySQL 等)并捕获变更数据 (CDC)
无需序列化或外部处理的内置 JSON 支持
用于高效存储和查询带时间戳数据的内置 时间序列支持
概率数据结构布隆过滤器top-kt-digest 等)用于内存高效近似计算
通过为 Spring、ASP.NET Core、FastAPI 和 Express 提供的开箱即用对象映射库实现快速开发
通过特定语言的 Redis 客户端库实现端到端支持,例如 JedisLettuceredis-pyredisVLNRedisStacknode-redisgo-redis
Redis Insight 用户界面,包括教程、辅助工具和查询构建器
完全支持本地部署、云端部署或混合环境部署*
部署在任何云或多云上的自动化部署
通过 Redis Flex 使用 SSD 存储扩展内存容量
使用 Redis Data Integration 实时摄取来自外部数据库的数据,将慢速数据转换为实时数据
使用地理分布式(主备)数据存储在全球范围内提供一致的实时客户体验
运行自动化数据库和集群管理(扩展、重新分片、重新平衡)
内置高可用性和灾难恢复管理
Redis 专家提供的企业级客户支持
用于数据访问的访问控制列表 (ACL) 和基于角色的访问控制 (RBAC)
用于控制平面的基于角色的访问控制 (RBAC)
安全集中式 RBAC 管理
连接和认证审计
用于身份管理和角色分配的 LDAP 集成
支持 HashiCorp Vault