与 Redis 和 Memcached API 兼容的内存数据存储,可直接替换两者使用。
- Star
- 12,078
- Fork
- 722
- 未关闭 Issue
- 81
- 最近提交
- 22小时前
这是什么?
Garnet 是微软研究院开发的远程缓存存储。它采用 RESP 网络协议,因此 C# 的 StackExchange.Redis 等未经修改的 Redis 客户端可以直接连接使用。它面向大量客户端连接和小批量请求的高吞吐场景,并在云环境中追求较低的客户端延迟。
Garnet 支持字符串操作及键过期,也支持 HyperLogLog、位图、有序集合、列表、哈希等对象类型。多键事务可通过客户端 RESP 事务、服务端存储过程以及用 C# 编写的自定义扩展实现,同时支持 Lua 脚本,并通过 .NET 的 SslStream 提供 TLS 加密通信。
底层存储引擎 Tsavorite 支持在内存、SSD 和云存储之间分层存放数据,并提供非阻塞检查点、故障恢复和操作日志持久化。集群模式支持分片、副本以及动态键迁移,并沿用标准 Redis 集群命令进行管理。向量集合(用于近似最近邻搜索)和键上的范围索引目前处于预览阶段。
核心功能
- 01通过 RESP 协议兼容未经修改的 Redis 客户端。
- 02支持字符串、HyperLogLog、位图、有序集合、列表、哈希和地理类型。
- 03允许用 C# 编写自定义操作和存储过程。
- 04提供 TLS 加密通信和基础访问控制。
- 05支持内存、SSD 和云存储分层,并具备检查点与恢复能力。
- 06提供集群模式,支持分片、副本和键迁移。
适用场景
- 在 .NET 服务中替换 Redis 缓存,同时保留现有客户端代码。
- 处理大量客户端并发、请求较小的高并发场景。
- 在兼容 Redis 的服务端之上用 C# 实现自定义缓存逻辑或数据类型。
- 在云主机上部署分片、带副本的缓存集群。
快速上手
- 1
按照项目文档中的入门指南操作
使用前须知
- 向量集和范围索引目前处于预览阶段。
- 集群模式为被动式,不实现领导者选举,需要外部控制平面发出集群命令。
收录于专题
标签
#cache#redis#key-value#csharp#dotnet#distributed-systems#low-latency#cache-storage#cluster#concurrent
常见问题
- garnet 是什么?
- 一个用 C# 编写的远程缓存存储,兼容 Redis RESP 协议,现有 Redis 客户端无需修改即可连接。 Garnet 是微软研究院开发的远程缓存存储。它采用 RESP 网络协议,因此 C# 的 StackExchange.Redis 等未经修改的 Redis 客户端可以直接连接使用。它面向大量客户端连接和小批量请求的高吞吐场景,并在云环境中追求较低的客户端延迟。
- garnet 可以免费使用吗?用的什么许可证?
- garnet 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- garnet 还在维护吗?
- 活跃维护中。garnet 最近一次提交是在 2026年11月6日。
- garnet 适合用来做什么?
- 在 .NET 服务中替换 Redis 缓存,同时保留现有客户端代码。 处理大量客户端并发、请求较小的高并发场景。 在兼容 Redis 的服务端之上用 C# 实现自定义缓存逻辑或数据类型。 在云主机上部署分片、带副本的缓存集群。
- garnet 怎么安装和运行?
- 按照项目文档中的入门指南操作
- 在哪里获取 garnet?
- 源代码和安装说明在 GitHub 上:https://github.com/microsoft/garnet
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
3.2万+12 本周1294C++Other维护活跃更新于 19小时前
从 Redis 分支而来的高性能键值数据结构服务器,适用于缓存与实时负载场景。
2.8万+70 本周1518CBSD-3-Clause更新于 17小时前
支持多线程、兼容 Redis 协议的内存数据库,可直接替换 Redis 使用。
1.2万679C++BSD-3-Clause更新于 16天前
一个 Node.js 键值存储库,支持 TTL 过期,并可通过适配器接入 Redis、MongoDB、SQLite 等多种后端。
44721JavaScriptMIT维护活跃更新于 9天前
面向 .NET 的 Redis 客户端库,也可连接 Valkey、Garnet、AWS ElastiCache 等兼容 RESP 协议的服务器。
62061562C#MIT维护活跃更新于 17小时前
基于 RocksDB 存储、兼容 Redis 协议的分布式 NoSQL 键值数据库,旨在降低内存成本并提升容量。
4491+6 本周690C++Apache-2.0更新于 22小时前