
Memorystore for Valkey 9.1 GA:3倍QPS与线程架构革新

Google Cloud 宣布 Memorystore for Valkey 9.1 正式可用(GA)。与 Memorystore for Redis Cluster 相比,Valkey 9.1 在微秒级延迟下实现了最高 3x QPS(每秒查询数)。这一性能提升主要来自对线程通信机制的彻底重构。
背景上,Google Cloud 自 2024 年 Redis Inc. 将许可证从 BSD 改为双许可后,联合多方支持了由 Linux 基金会治理的开源替代品 Valkey。Valkey 9.1 在性能与功能上已远超最初的 fork,特别适合需要处理数百万并发用户、同时保持微秒级延迟的 AI 和微服务架构。
性能核心:Valkey 9.1 用无锁多队列消息架构取代了原先的列表轮询。原先 I/O 线程静态分配客户端 socket,主线程需要不断轮询待处理客户端列表。新架构包含三类队列:主线程到 I/O 线程的 SPMC 队列(单生产者多消费者),工作线程按需拉取任务,实现动态工作窃取;I/O 线程到主线程的 MPSC 队列(多生产者单消费者),完成的任务即时被主线程弹出,消除了忙等;以及线程专属的 SPSC 队列,用于内存清理和高负载 epoll 卸载。此外,Valkey 9.1 引入两阶段动态扩缩容引擎:当主线程 CPU 使用率超过 30% 时,自动激活第一个后台 I/O 线程;之后根据 SPMC 队列积压情况实时调整活跃 I/O 线程数,空闲时自动休眠,避免浪费核心。
新开发能力方面,Valkey 9.1 增加了细粒度数据库级 ACL 控制,可在 ACL 框架内限制用户对特定数字数据库的访问,例如生产用户仅访问 db=0,staging 用户仅访问 db=1,无需修改 key 前缀即可实现多租户隔离。ACL 功能免费,支持集中式 1:N 策略管理、版本化策略修订和审计日志。
新增 CLUSTERSCAN 命令,用于集群级键扫描,解决了原先逐节点扫描在槽迁移或故障转移时可能漏键、重键或失败的问题。它通过拓扑感知游标(编码当前槽、本地哈希表指纹和本地游标)实现在拓扑变化时的安全扫描。支持两种策略:顺序全集群扫描(单 worker,简单)和并行扫描(多 worker,通过 SLOT 参数分区 16,384 个槽)。
还新增了 HGETDEL(原子获取并删除哈希字段,适用于一次性令牌消费)、MSETEX(同时设置多个 key 并共享过期时间)、以及 HSETEX 的 NX/XX 条件标志。这些命令减少了网络往返和流水线开销。
构建于 Memorystore for Valkey 9.0 之上,9.1 还保留了此前发布的特性:内置 AI/向量工作负载模块(原生 JSON 支持和布隆过滤器),以及六种新节点规格——小规格(1.25/2.5/3.5 GB,仅限集群模式禁用环境)、高 CPU 和大型 SKU(8 vCPU/13 GB、8 vCPU/26 GB)、XXL 规格(110 GB RAM/16 vCPU)。注意:这些数字来自开源基准测试,实际性能因工作负载而异。
迁移方面,Google Cloud 提供了完全托管的在线迁移工作流:先部署目标实例,再建立持续双同步复制,验证数据一致性后切换应用连接端点即可。整个过程不需要停机,只需改配置指向新实例。
目前,Google Cloud 前 100 大客户中超过 95% 已在用 Memorystore 支撑高吞吐负载,Valkey 用户增长迅速。客户案例包括美国职业棒球大联盟(MLB)和 Target。MLB 用 Memorystore for Valkey 处理不可预测的赛时流量高峰;Target 将其用于个性化服务的超低延迟缓存,并期待在 9.1 中利用性能增强。


