Valkey vs Redis:性能、功能与选择 – wiki基地

Valkey vs Redis:性能、功能与选择

引言

在现代应用开发中,内存数据存储(In-memory Data Store)已成为提升性能和响应速度的关键技术。其中,Redis 凭借其卓越的性能和丰富的功能,长期以来一直是该领域的佼佼者。然而,随着开源社区对项目治理和商业化策略的关注,Valkey 应运而生,作为一个高性能的 Redis 分支,由 Linux Foundation 托管,旨在提供一个开放、社区驱动的替代方案。

Valkey 的出现,使得开发者在选择内存数据存储时多了一个重要的考量。本文将深入探讨 Valkey 和 Redis 在性能、功能方面的异同,并提供一份详细的选择指南,帮助您根据具体需求做出明智的决策。

Redis 概述

Redis(Remote Dictionary Server)是一个开源、高性能的内存数据结构存储,可用作数据库、缓存和消息代理。它以其亚毫秒级的响应时间、多样化的数据结构(如字符串、哈希、列表、集合、有序集合等)以及对原子操作的支持而闻名。

Redis 的主要特点:

  • 单线程核心: 传统上,Redis 以其单线程模型处理核心命令,这简化了并发控制并确保了操作的原子性。
  • 持久化: 支持 RDB(快照)和 AOF(只追加文件)两种持久化方式,确保数据在服务器重启后不会丢失。
  • 高可用与集群: 提供主从复制、Sentinel(实现高可用)和 Cluster(实现数据分片和横向扩展)等功能。
  • 丰富的功能: 支持发布/订阅、事务、Lua 脚本、客户端缓存、流水线等。
  • 模块系统与数据类型: Redis 拥有强大的模块系统,官方和社区提供了大量扩展模块,如 RedisJSON、RediSearch、RedisGraph、RedisTimeSeries 以及用于 AI/ML 工作负载的 Vector 数据类型等。
  • 最新发展:
    • Redis 6.0: 引入了 I/O 多线程,用于处理网络通信(读取和写入套接字,以及命令解析),从而将这些任务从主线程中卸载,提高了吞吐量。
    • Redis 8.0: 进一步增强了异步 I/O 线程的实现,根据不同命令,吞吐量提高了 37% 到 112%。它还集成了更先进的数据类型,使其更适用于 AI 驱动的工作负载。

Valkey 概述

Valkey 起源于 Redis 7.2 的一个分支,由 Linux Foundation 托管,其创建旨在确保一个真正开放治理和社区驱动的 Redis 兼容项目。它继承了 Redis 的高性能和核心数据结构,并在其基础上进行了优化和增强。

Valkey 的核心特点与发展:

  • 开放治理: 作为 Linux Foundation 的项目,Valkey 强调社区驱动的开发模式和开放的许可策略,旨在为用户提供长期稳定的开源保障。
  • 高性能继承: 继承了 Redis 7.2 的所有核心特性,包括内存存储、多样化的数据结构和低延迟特性。
  • 增强型 I/O 多线程:
    • Valkey 8.0: 对 I/O 多线程处理进行了显著增强,允许并发处理网络读写,并更好地利用多核处理器。这意味着在某些基准测试中,Valkey 8.0 的吞吐量达到了每秒 119 万请求(RPS),比 Valkey 7.2 提升了 230%。Valkey 还可以根据当前负载动态调整活跃的 I/O 线程数量。
  • 内存效率优化:
    • Valkey 8.1: 专注于内存优化,引入了新的字典结构并重建了其键值存储,基于现代数据结构。这使得内存效率提高了 20%,并减少了每个键的开销。在某些情况下,Valkey 8.1 在处理大型数据集时,比 Redis 8.2 少使用了约 28% 的内存。
  • 专业性能特性: 包含对 RDMA(Remote Direct Memory Access)的实验性支持,在特定的低延迟、高带宽环境中可以提供显著的性能提升。Valkey 还提供了每插槽(per-slot)指标,用于更细粒度的监控和性能洞察。

性能

滚动至顶部