ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Garnet 完全指南:微软开源的高性能缓存存储如何用 RESP 协议直连 Redis 生态

Garnet 完全指南:微软开源的高性能缓存存储如何用 RESP 协议直连 Redis 生态 Garnet 完全指南微软开源的高性能缓存存储如何用 RESP 协议直连 Redis 生态【免费下载链接】garnetGarnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.项目地址: https://gitcode.com/GitHub_Trending/garnet4/garnetGarnet 是微软研究推出的远程缓存存储系统remote cache-store。它使用与 Redis 相同的 RESP 协议现有 Redis 客户端无需改一行代码即可接入同时提供比同类开源缓存高一个量级的吞吐与更低的延迟。 Garnet 项目定位让 Redis 客户端直接可用的缓存存储一句话概括Garnet 是一个可以直接被 Redis 客户端使用的高性能分布式缓存差异化在于它不追求再做一个 Redis而是从网络收包、命令解析到存储交互整条链路重新设计。零迁移成本协议层就是 RESPC# 的 StackExchange.Redis 等主流客户端可直接连接业务代码基本不动。性能取向明确面向多客户端连接 小批量请求这一真实生产形态吞吐相比同类开源缓存-store 提升明显。现代技术栈基于最新 .NET 构建Linux 与 Windows 均经过充分测试采用 MIT 协议开源。下图是官方基准测试中 GET 操作在不同客户端会话数下的吞吐对比红色柱Garnet在连接数越多时优势越大⚡ Garnet 核心能力拆解它为什么快、为什么好用1. 协议兼容面广常用命令基本都有结论日常缓存开发所需 API 开箱即用。Garnet 覆盖原始字符串操作GET/SET/MGET、INCR 族、过期时间、远程数据结构List、Hash、Set、Sorted Set、Geo、分析类 APIHyperLogLog、Bitmap以及发布订阅、MULTI/EXEC 事务、ACL 访问控制和 SAVE/BGSAVE 检查点操作详见 API 覆盖说明。2. 共享内存网络层砍掉线程切换开销结论快在网络层的设计上。Garnet 的网络层基于共享内存TLS 处理和存储交互直接在网络 IO 完成线程上执行CPU 缓存一致性负责把数据推给处理逻辑避免了传统网络设计中跨分片搬数据的开销。网络层还可插拔替换未来可接入 bypass 内核的协议栈。3. Tsavorite 存储引擎双 KV 存储 统一日志结论存储层是为高并发写的且自带数据库级特性。Tsavorite 由主存储main store优化原始字符串、精细管理内存和对象存储object store承载 Sorted Set、Hash、List 等复杂对象组成两者由统一操作日志绑定。支持内存/SSD/云存储的分层存储、快速非阻塞检查点、AOF 操作日志持久化与恢复实现见 libs/storage/Tsavorite/。4. 用 C# 直接扩展服务器端逻辑结论定制扩展的门槛被压低到写 C# 的水平。你可以注册自定义字符串操作、自定义对象类型和多键存储过程也可以通过模块机制打包发布同时保留完整的 Lua 脚本支持以兼容 Redis 脚本习惯。示例模块参考 modules/。5. 集群模式与两个预览新能力结论单节点跑不满时集群能力是齐的。支持分片、复制、故障转移以及用于再均衡分片的动态键迁移节点间通过 gossip 同步状态可用标准 Redis 集群命令管理集群注意集群设计目前是被动的不做 leader 选举依赖外部控制面下发命令。此外还有两个预览功能基于 DiskANN 的Vector Sets近似最近邻搜索和基于 Bf-Tree 的Range Index键上的范围/等值二级索引。延迟方面在开启加速网络的 Azure 虚拟机上Garnet 的单操作延迟常低于 300 微秒99.9 分位向量检索场景下Garnet 的 QPS 也处于对比系统的前列 Garnet 落地场景与选型建议谁适合用、什么时候该选它适合用 Garnet 的团队高并发 Web / 微服务后端客户端连接数多、单次请求数据量小的典型缓存形态正是 Garnet 吞吐优势最大的区间单实例即可用满整台机器的 CPU 和内存无需节点内分片。对尾延迟敏感的实时业务亚毫秒级 p99.9 延迟适合流处理、事件驱动和在线分析类应用。想复用 Redis 技术栈但需要更多数据库能力的团队AOF、检查点、分层存储让你能跑下内存数据集而不用换整套体系。需要嵌入自有逻辑的缓存用 C# 写服务器端操作比维护独立业务服务更轻。什么时候该选它现用 Redis 客户端、但性能瓶颈在多连接小批量吞吐上需要 Linux 和 Windows 双平台部署想要缓存 向量检索的合并架构Vector Sets 预览阶段可先关注。需要留意的地方集群模式依赖外部控制面不适合即开即自治的诉求部分 Redis 命令仍在补齐中选型前建议对照 命令兼容性文档 核对你的命令清单。生产环境也可以直接选全托管的 Azure Cosmos DB Garnet Cache省掉基础设施运维。 Garnet 快速上手路径从克隆仓库到跑起第一个实例1. 克隆并构建git clone https://gitcode.com/GitHub_Trending/garnet4/garnet cd garnet dotnet build2. 启动第一个实例服务器主程序在 main/GarnetServer/配套示例配置 main/GarnetServer/garnet.conf构建产物即可作为 GarnetServer 运行任意 Redis 客户端连接默认端口即可读写。3. 配置方式GarnetServer 支持garnet.confJSON 格式功能覆盖最全和redis.conf关键字格式便于从 Redis 平滑迁移两种配置文件命令行参数可覆盖文件中的任何设置未指定项回落到 libs/host/defaults.conf 的默认值。详细说明见 配置文档。4. 关键文档入口项目介绍与部署选项website/docs/welcome/intro.md集群分片/复制/迁移website/docs/cluster/overview.md基准测试方法与工具Resp.benchmark源码在 benchmark/website/docs/benchmarking/overview.md版本发布website/docs/welcome/releases.md如果你正在为缓存层选型建议先按上面的路径克隆仓库、跑起本地实例再用自己的命令集对照兼容性文档验证一遍——这通常是判断 Garnet 是否适合你项目的最短路径更多细节可继续深入 website/docs/ 下的主题文档。【免费下载链接】garnetGarnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.项目地址: https://gitcode.com/GitHub_Trending/garnet4/garnet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表