Repolode
microsoft

microsoft/garnet

一个用 C# 编写的远程缓存存储,兼容 Redis RESP 协议,现有 Redis 客户端无需修改即可连接。

可替代:Redis

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. 1

    按照项目文档中的入门指南操作

使用前须知

  • 向量集和范围索引目前处于预览阶段。
  • 集群模式为被动式,不实现领导者选举,需要外部控制平面发出集群命令。

收录于专题

标签

常见问题

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 数据每日更新。

相关项目