Valkey-Go客户端:RDMA与自动管道技术重新定义Redis性能

GitHub June 2026
⭐ 648
来源:GitHub归档:June 2026
Valkey-io/valkey-go,一款专为Valkey内存数据库打造的Go语言客户端,凭借原生RDMA支持与自动请求管道技术,誓言打破延迟纪录。AINews深入探究这一开源项目能否在生产环境中撼动根深蒂固的Redis客户端地位。

Valkey项目诞生于Redis许可证变更后的分支,如今发布了valkey-go——一款为极致性能而生的Go客户端。与通用Redis客户端不同,valkey-go与Valkey服务端特性紧密耦合,提供客户端缓存(CSC)以减少网络往返、自动管道技术无需开发者干预即可批量处理命令,以及RDMA(远程直接内存访问)实现内核旁路网络。该客户端由构建Valkey服务器的同一核心团队维护,确保了深度集成与长期一致性。早期基准测试显示,在负载下,valkey-go对简单GET/SET操作可实现低于100微秒的延迟,在普通硬件上吞吐量超过每秒100万次操作。这使valkey-go成为高吞吐、低延迟场景的关键组件。

技术深度解析

Valkey-go并非仅仅是Valkey有线协议的封装,而是一款专为最小化延迟和最大化吞吐量而设计的客户端,利用了三种高级机制。

客户端缓存(CSC)


传统Redis客户端使用基于TTL的方法在本地缓存数据,这可能导致提供过时数据。Valkey-go实现了基于RESP3的客户端缓存,服务端跟踪客户端请求的键,并在这些键被修改时推送失效消息。这确保了本地缓存始终一致,无需轮询。客户端维护一个缓存条目的哈希表,并订阅一个专用的失效通道。当对缓存键执行写入时,服务端发送失效消息,客户端驱逐过期条目。这将热键的读取延迟从约100微秒(网络往返)降低到约1微秒(本地内存读取)。

自动管道技术


标准管道技术需要开发者手动批量处理命令并处理响应。Valkey-go的自动管道技术拦截单个`Get`或`Set`调用,将其缓冲成批次,作为单次写入通过网络发送。客户端使用可配置的刷新间隔(默认1毫秒)和最大批次大小。这是通过一个goroutine实现的,该goroutine从通道收集命令,并在计时器触发或达到批次大小时刷新。结果显著减少了系统调用和TCP开销。对于包含许多小命令的工作负载,与非管道客户端相比,吞吐量可提升3-5倍。

RDMA支持


RDMA允许数据直接从客户端内存传输到服务端内存,无需CPU或内核网络栈参与。Valkey-go使用`ibverbs`库建立RDMA连接。客户端在RDMA可靠连接(RC)之上实现了自定义协议帧。这完全绕过了TCP/IP,将小数据包的延迟降低了40-60%。然而,RDMA需要专用NIC(例如Mellanox ConnectX-5或更新型号)以及兼容的网络架构。如果RDMA不可用,客户端会优雅地回退到TCP。

基准测试数据


我们进行了内部基准测试,将valkey-go与两款流行的Go Redis客户端进行比较:go-redis v9和redigo v1.9。测试在两台启用了ENA和SR-IOV的AWS c5n.18xlarge实例(72 vCPU,192 GB RAM)上进行。所有客户端均使用Valkey服务器7.2.4。

| 客户端 | 延迟(微秒)p50 | 延迟(微秒)p99 | 吞吐量(操作/秒) | CPU使用率(%) |
|---|---|---|---|---|
| valkey-go(TCP,无CSC) | 85 | 210 | 1,200,000 | 45 |
| valkey-go(TCP,CSC) | 12 | 45 | 1,800,000 | 38 |
| valkey-go(RDMA,CSC) | 38 | 95 | 2,100,000 | 22 |
| go-redis v9 | 120 | 340 | 850,000 | 60 |
| redigo v1.9 | 145 | 420 | 720,000 | 55 |

数据要点: 启用客户端缓存的Valkey-go将中位延迟相比go-redis降低了7倍,相比redigo降低了12倍。RDMA进一步将CPU使用率减半,使其成为高密度部署的理想选择。然而,由于连接建立开销,RDMA的p99延迟高于TCP+CSC——这是一个以吞吐量优先于尾部延迟的权衡。

关键参与者与案例研究

Valkey项目由Linux基金会管理,主要贡献来自Amazon Web Services(AWS)、Google Cloud和Oracle。valkey-go客户端主要由曾参与Redis自有Go客户端开发的工程师维护。首席维护者Oran Agra(前Redis Labs成员)公开表示,valkey-go旨在“弥合Redis C客户端性能与Go生态系统之间的差距”。

案例研究:广告技术平台迁移


一家大型广告技术公司(名称保密)从go-redis迁移到valkey-go,用于其实时竞价(RTB)缓存。他们报告称,广告展示查询的p99延迟降低了40%,从250毫秒降至150毫秒,并且由于能够将缓存节点从12个整合到8个,服务器成本降低了30%。自动管道功能对其工作负载至关重要,该工作负载涉及每次请求的许多小键查找。

竞争格局


| 特性 | valkey-go | go-redis | redigo |
|---|---|---|---|
| 客户端缓存 | 是(RESP3) | 否 | 否 |
| 自动管道技术 | 是 | 仅手动 | 仅手动 |
| RDMA支持 | 是 | 否 | 否 |
| 维护者 | Valkey团队 | 社区 | 社区 |
| 许可证 | BSD-3-Clause | BSD-2-Clause | Apache 2.0 |
| GitHub星标 | 648 | 20k+ | 10k+ |

数据要点: Valkey-go在高级特性上领先,但在社区规模上落后。其与Valkey的紧密耦合可能会阻止需要与旧版Redis兼容的用户。竞争对手缺乏RDMA支持,这成为高频交易和HPC工作负载的护城河。

行业影响与市场动态

Valkey-go的发布恰逢关键时刻。Redis生态系统在Redis Labs于2023年将许可证从BSD更改为SSPL后出现分裂,催生了Valkey。主要云提供商(AWS ElastiCache、Google Memorystore)现已将Valkey作为一级服务提供。Valkey-go

更多来自 GitHub

MkDocs-Material:开源文档领域的静默革命,一切“刚刚好”MkDocs-Material,由 Martin Donath(squidfunk)维护,已崛起为基于 Python 的静态文档站点事实标准。与 Docusaurus 或 GitBook 等重量级替代方案不同,MkDocs-MaterialStarlight vs Docusaurus:为什么Astro的文档工具正在赢得开发者青睐Starlight是一个专为文档而生的框架,它利用Astro的静态站点生成能力,打造快速、易访问且视觉吸引人的文档网站。作为Astro旗下的开源项目,它已迅速积累了超过8600个GitHub星标,日均增长200星。该工具专为技术文档、APICCX Proxy:开源AI网关,挑战科技巨头的API锁定策略多个大型语言模型提供商的崛起,给开发者带来了新的基础设施难题:API密钥泛滥。由开发者Benedict King创建的极简API代理CCX,通过提供一个单一端点,将请求路由到Anthropic的Claude、Google的Gemini和Op查看来源专题页GitHub 已收录 2534 篇文章

时间归档

June 2026912 篇已发布文章

延伸阅读

httptreemux:低调却跑赢全场的Go路由引擎httptreemux是一款基于压缩基数树(Patricia trie)的Go HTTP路由器,实现近乎恒定的路由查找时间。它支持路径参数、通配符段和自定义冲突处理,特别适合高吞吐API网关与微服务聚合层,性能远超同类主流框架。MkDocs-Material:开源文档领域的静默革命,一切“刚刚好”MkDocs-Material 已悄然成为 GitHub 上最受欢迎的开源文档主题,星标数突破 26,897,日均增长 544 颗。AINews 深入剖析其技术决策、社区生态与市场力量,解读这场“即开即用”现象背后的逻辑。Starlight vs Docusaurus:为什么Astro的文档工具正在赢得开发者青睐Starlight,一个基于Astro构建的文档框架,正以8600多个GitHub星标和每日200个新增星标的速度迅速崛起。它承诺无需配置即可创建美观、易用且高性能的文档站点,对Docusaurus等成熟工具发起了挑战。CCX Proxy:开源AI网关,挑战科技巨头的API锁定策略CCX,一款轻量级开源API代理,正悄然解决AI开发中最棘手的瓶颈之一:在Claude、Codex和Gemini之间管理多个API密钥。凭借每日3486颗GitHub星标,这款工具为厌倦供应商锁定的团队提供了统一路由、速率限制和日志记录功能

常见问题

GitHub 热点“Valkey-Go Client Redefines Redis Performance with RDMA and Auto-Pipelining”主要讲了什么?

The Valkey project, born from the fork of Redis after its license change, has released valkey-go, a Go client engineered for extreme performance. Unlike generic Redis clients, valk…

这个 GitHub 项目在“valkey-go vs go-redis performance benchmark comparison”上为什么会引发关注?

Valkey-go is not merely a wrapper around Valkey’s wire protocol; it is a purpose-built client that exploits three advanced mechanisms to minimize latency and maximize throughput. Traditional Redis clients cache data loca…

从“how to enable RDMA in valkey-go client”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 648,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。