Valkey是什么?你需要知道的一切
介绍
Valkey 是一个开源的、高性能的、内存中的数据结构存储。它可以用作数据库、缓存和消息代理。Valkey 是 Redis 的一个分支,由 Linux 基金会支持,旨在保持其开源和社区驱动的性质。
本文将深入探讨 Valkey 的各个方面,包括其起源、特性、与 Redis 的区别、架构和常见用例。
Valkey 的起源:为什么需要一个新的分支?
Valkey 的诞生源于 Redis 许可模式的改变。Redis 最初是根据 BSD 许可发布的,这是一种非常宽松的开源许可。然而,2024 年,Redis Inc. 将其许可更改为源代码可用许可(SSAL)和服务器端公共许可(SSPL)的双重许可。
这些新许可限制了云服务提供商将 Redis 作为服务提供的能力,并引起了开源社区的担忧。作为回应,包括亚马逊、谷歌云、甲骨文、爱立信和 Snap 在内的多家科技公司联合起来,创建了 Valkey,作为 Redis 的一个分支。Valkey 承诺将继续在 BSD 许可下开发,确保其永久开源。
Valkey 的主要特性
Valkey 继承了 Redis 的许多强大功能,并在此基础上进行了一些改进:
- 高性能:Valkey 将所有数据存储在内存中,从而实现了极低的延迟和高吞吐量。它还引入了新的 I/O 线程架构,显著提高了并行处理能力。
- 丰富的数据结构:Valkey 支持多种数据结构,包括字符串、哈希、列表、集合、有序集合、位图、HyperLogLog、地理空间索引和流。
- 持久化:Valkey 提供了多种持久化选项,可以将内存中的数据保存到磁盘,以防止数据丢失。
- 高可用性:通过 Valkey Sentinel 和 Valkey Cluster,可以实现自动故障转移和高可用性。
- 可扩展性:Valkey 支持通过 Lua 脚本和模块来扩展其功能。
Valkey 与 Redis:有什么区别?
虽然 Valkey 是 Redis 的一个分支,并且与 Redis 7.2.4 高度兼容,但它们之间存在一些关键区别:
| 特性 | Valkey | Redis |
|---|---|---|
| 许可 | BSD 3-Clause (开源) | RSALv2 + SSPLv1 (源代码可用) |
| 治理 | Linux 基金会和社区 | Redis Inc. |
| I/O 线程 | 增强的多线程 I/O | 单线程(部分操作多线程) |
| 性能 | 通常具有更高的吞吐量和更低的延迟 | 性能稳定,但可能不如 Valkey |
| 生态系统 | 正在快速发展 | 成熟且广泛 |
对于大多数用户来说,从 Redis 迁移到 Valkey 几乎不需要更改任何代码,因为 Valkey 保持了与 Redis API 的兼容性。
Valkey 架构
Valkey 提供了多种部署架构,以满足不同的需求:
- 单机模式:最简单的部署方式,单个 Valkey 进程在单台服务器上运行。
- 主从复制:一个主节点处理写操作,多个从节点复制主节点的数据并处理读操作,从而提高了读性能和可用性。
- Sentinel:一个或多个 Sentinel 进程监控主从节点,并在主节点发生故障时自动进行故障转移。
- 集群模式:Valkey Cluster 将数据分片到多个节点上,从而实现了水平扩展,支持更大的数据集和更高的并发量。
Valkey 的常见用例
Valkey 的高性能和灵活性使其适用于多种场景:
- 缓存:作为数据库或应用程序的缓存层,显著加快数据访问速度。
- 会话存储:存储用户会话信息,实现快速的会话管理。
- 实时分析:处理实时数据流,进行实时数据分析。
- 消息队列:通过其发布/订阅和列表功能,实现异步消息队列。
- 排行榜:利用有序集合(Sorted Set)轻松实现游戏或应用程序的排行榜功能。
结论
Valkey 的出现为需要高性能、内存中数据存储的用户提供了一个完全开源的替代方案。凭借其强大的社区支持、持续的性能改进和对开源精神的承诺,Valkey 有望成为 Redis 的一个强有力的竞争者。
如果您正在寻找一个高性能、开源的内存数据库,那么 Valkey 绝对值得您考虑。