Skip to content

欢迎来到 Garnet

Garnet是 Microsoft Research(微软研究院) 推出的新型远程缓存存储系统,设计宗旨:高速、可扩展性和低延迟。Garnet在单个节点内具备线程自动伸缩的能力。它还支持分片集群执行,具有复制、检查点、故障转移和事务功能。它可以在主存储器以及分层存储(如SSD和Azure存储)上运行。Garnet支持丰富的API接口并且具有很强的扩展性。

Garnet使用Redis的RESP作为其主要的传输协议。因此,人们可以在大多数编程语言中使用未修改的Redis客户端与Garnet一起使用,例如,使用C#中的StackExchange.Redis。与其他开源缓存存储系统相比,可以获得更好的性能、延迟、扩展性和耐久性功能。

请注意,Garnet目前是微软研究院的一个研究项目。我们是一群充满激情的研究人员和开发人员,目前全职致力于使其尽可能稳定和高效。我们的目标是围绕Garnet创建一个充满活力的社区。事实上,Garnet的质量已经足够高,因此微软的几个一方团队和平台团队已经在内部部署了Garnet的版本很多个月了。

Garnet提供以下关键优势:

  • 与同类型的开源缓存存储系统相比,在小批量和多客户端会话的服务器吞吐量方面提高了几个数量级(ops/sec)。
  • 在Windows和Linux上启用了加速 TCP 的公有云(Azure)机器上,单个操作延迟极低(通常99%以下不到300ms。
  • 随着客户数量的增加,无论是否采用客户端批处理, 具有更好的可扩展性。
  • 能够使用服务器机器的所有CPU/内存资源,只需一个共享内存服务器实例(无需节点内集群)。
  • 支持大于内存的数据集,可溢出到本地和云存储设备。
  • 数据库功能,如快速检查点和恢复,以及发布/订阅。
  • 支持多节点分片哈希分区(Redis的"集群"模式),状态迁移和复制。
  • 经过全面的测试套件测试(针对 Garnet 及其存储层 Tsavorite 进行了数千次单元测试)。
  • 一个易于演变和扩展的C#代码库。

如果您的应用程序或服务需要一个具有大量实用功能、高性能以及基于最先进的 Microsoft Research 技术的现代设计的缓存存储,那么 Garnet 就是适合您的系统。在此处查看有关 Garnet 性能优势的更多详细信息。

API 覆盖

Garnet支持大量(还在持续增加)API接口,包括:

  • 原始字符串操作,GET、SET、MGET、MSET、GETSET、SETEX、DEL、EXISTS、RENAME、EXPIRE、SET变体(如果存在则设置,如果不存在则设置)。
  • 数字运算,INCR、INCRBY、DECR、DECRBY。
  • 检查点/恢复操作,SAVE、LASTSAVE、BGSAVE。
  • 基本管理操作 PING、QUIT、CONFIG、RESET、TIME。
  • 高级数据结构,List、Hash、Set、Sorted Set和Geo。
  • 分析API,Hyperloglog和Bitmap。
  • 发布/订阅。
  • 事务。

这个列表会随着时间的推移而增长,我们很乐意听取您最想要的API!

此外,Garnet支持一个强大的自定义运算符框架,您可以在服务器上注册自定义的C#数据结构和读取-修改-写入操作,并使用相同的传输协议访问它们。因此,您可以使用客户端执行新命令的能力来调用这些命,例如StackExchange.Redis 客户端库中的Execute和调用。ExecuteAsync

支持的平台

Garnet 服务器基于高性能 .NET 技术,并且在开始编写时就考虑到了性能相关的问题。 Garnet 已经过广泛测试,可以在 Linux 和 Windows 以及商用 Azure 硬件和边缘设备上同样高效地工作。 还可以将 Garnet 视为一种速度极快的远程 .NET 数据结构服务器,可以通过利用丰富的 C# 库生态系统进行扩展,因此我们可以自己扩展核心 API。 Garnet 的存储层称为 Tsavorite,它支持各种后备存储设备,例如快速本地 SSD 驱动器和 Azure 存储。它还具有针对 Windows 和 Linux 进行优化的设备。最后,Garnet 支持 TLS 以实现安全连接。