前言
前不久Redis宣布从 Redis 7.4 开始,将原先比较宽松的 BSD 源码使用协议修改为 RSALv2 和 SSPLv1 协议,该协议变化意味着Redis不再开源。今天给大家分享一款完全开源(MIT协议)、免费的Redis替代性项目产品:Garnet。
Garnet项目介绍
Garnet是一款由微软研究院基于.NET开源的高性能、跨平台的分布式缓存存储数据库,该项目提供强大的性能(吞吐量和延迟)、可扩展性、存储、恢复、集群分片、密钥迁移和复制功能。并且无需做任何修改可以与现有的 Redis 客户端配合使用。
Garnet独特优势
协议兼容性: Garnet 采用流行的 RESP 线路协议作为起点,这使得可以从当今大多数编程语言(例如C#中的 StackExchange.Redis
)中可用的未经修改的 Redis 客户端使用 Garnet。
性能优势: 相比同类开源缓存存储,Garnet在处理多客户端连接和小批量请求时表现更优,提供更好的吞吐量和可扩展性,从而节省成本。
低延迟: 在Azure VM上展示了极低的客户端延迟,通常低于300微秒,对于实际场景至关重要。
技术特点: 基于最新的.NET技术,具有跨平台、可扩展和现代化的特点,易于开发和维护,并在Linux和Windows上实现了最先进的性能。
Garnet项目源代码
Garnet性能优势
- Garnet性能测试详情对比文章阅读:https://microsoft.github.io/garnet/docs/benchmarking/results-resp-bench
我们预配两个运行 Linux (Ubuntu 20.04) 的 Azure 标准 F72s v2 虚拟机(每个虚拟机 72 个 vcpu,144 GiB 内存),并启用加速 TCP。这个SKU的好处是我们保证不会与另一个VM共置,这将优化性能。一台机器运行不同的缓存存储服务器,另一台机器专门用于发布工作负载。我们使用名为 Resp.benchmark 的基准测试工具来生成所有结果。在撰写本文时,我们将 Garnet 与最新开源版本的 Redis (v7.2)、KeyDB (v6.3.4) 和 Dragonfly (v6.2.11) 进行了比较。
吞吐量获取
数据库大小为 (a) 1024 个键和 (b) 2.56 亿个键时的吞吐量(对数尺度)、不同数量的客户端会话:
数据库大小为 (a) 1024 个键和 (b) 2.56 亿个键时的吞吐量(对数规模)、不同的批量大小:
延迟获取/设置
延迟、不同客户端会话数量(a)中值、(b)第 99 个百分位和(c)第 99.9 个百分位:
不同批量大小下的延迟(a)中值、(b)第 99 个百分位数和(c)第 99.9 个百分位数:
项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。
- GitHub开源地址:https://github.com/microsoft/garnet
- 在线使用文档:https://microsoft.github.io/garnet/docs
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。
DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。