Garnet:微软官方基于.NET开源的高性能分布式缓存存储数据库
前言
前不久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技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
Garnet:微软官方基于.NET开源的高性能分布式缓存存储数据库的更多相关文章
- 一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收
目录 微软Github开源项目入口 微软开源项目受欢迎程度排名 Visual Studio Code TypeScript RxJS .NET Core 基础类库 CNTK Microsoft cal ...
- 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...
- 三分钟玩转微软AI量化投资开源库QLib
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 微软QLib简介 微软亚洲研究院发布了 AI 量化投资开源平台"微矿 Qlib".Q ...
- 基于netty轻量的高性能分布式RPC服务框架forest<上篇>
工作几年,用过不不少RPC框架,也算是读过一些RPC源码.之前也撸过几次RPC框架,但是不断的被自己否定,最近终于又撸了一个,希望能够不断迭代出自己喜欢的样子. 顺便也记录一下撸RPC的过程,一来作为 ...
- WSL 2 上启用微软官方支持的 systemd
以前折腾了很久的 genie 和 distrod 来实现 wsl2 上的 systemd.现在微软和Canonical联合声明发布了官方支持的systemd,之前的折腾貌似有点浪费时间了.如果微软不发 ...
- 基于软件开源实践(FLOSS)论共产主义的可实现性
好久没发博客,来个狠的,我不信挨踢界有人比我更蛋疼来研究这个. 在马克思提出共产主义100多百年后,软件开发领域中出现了一种特别的生产方式:开源(FLOSS:Free/Libre and Open S ...
- SSDB是一个开源的高性能数据库服务器
SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下 ...
- 微软官方NET Core 2.0
NET Core 2.0 微软官方发布的.NET Core 2.0相关的博客: Announcing .NET Standard 2.0 Announcing .NET Core 2.0 F# and ...
- 分享微软官方Demo用的SharePoint 2010, Exchange 2010, Lync 2010虚拟机
微软官方有一套专门用于SharePoint 2010, Exchange 2010 Demo的虚拟机:SharePoint 2010: Information Worker Demonstration ...
- 基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署
前文已经说过,OPC基于微软的DCOM技术,所以开发OPC服务器我们要做的事情就是开发一个基于DCOM的EXE文件.一个代理/存根文件,然后就是写一个OPC客户端测试一下我们的服务器了.对于第一项工作 ...
随机推荐
- #分治,决策单调性dp#CF868F Yet Another Minimization Problem
题目 给定一个序列 \(a\),要把它分成 \(k\) 个子段.(\(n\leq 10^5,k\leq 20\)) 每个子段的费用是其中相同元素的对数.求所有子段的费用之和的最小值. 分析 有一个很明 ...
- 深入理解HashMap和TreeMap的区别
目录 简介 HashMap和TreeMap本质区别 排序区别 Null值的区别 性能区别 共同点 深入理解HashMap和TreeMap的区别 简介 HashMap和TreeMap是Map家族中非常常 ...
- OpenHarmony创新赛 | 赛事宣讲会日期重磅官宣!为你带来超详尽的赛事攻略
最近接到很多小伙伴私信提问,比如如何报名开放原子开源大赛OpenAtom OpenHarmony(简称:"OpenHarmony")创新赛?有哪些赛题可以报名参赛?现在,赛事宣 ...
- MogDB/openGauss中merge的语法解析
MogDB/openGauss 中 merge 的语法解析 近期了解学习了 MogDB/openGauss 中 merge 的使用,merge 语法是根据源表对目标表进行匹配查询,匹配成功时更新,不成 ...
- 【课程汇总】Hello HarmonyOS系列课程,手把手带你零基础入门
HarmonyOS是面向未来.面向全场景的新一代智能终端操作系统,为不同设备的智能化.互联与协同提供了统一的语言,给人们带来简洁.流畅.连续.安全可靠的全场景交互体验. 初识HarmonyOS的开发者 ...
- C#/.NET/.NET Core拾遗补漏合集(24年4月更新)
前言 在这个快速发展的技术世界中,时常会有一些重要的知识点.信息或细节被忽略或遗漏.<C#/.NET/.NET Core拾遗补漏>专栏我们将探讨一些可能被忽略或遗漏的重要知识点.信息或细节 ...
- GAN的实现和一些问题
GAN的学习是一个二人博弈问题,最终目标是达到纳什平衡.对抗指的是生成网络和判别网络的互相对抗.生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本.示意图如下: 生成 ...
- .gitignore 基础
前言 gitignore文件有几种方式生成. 1.在创建版本库的时候生成. 2.自己手动添加: windows环境下,不能把文件直接改名为.gitignore,会提示你必须输入文件名.所以我们先新建一 ...
- CentOS+Django+uWSGI+Celery+Supervisor配置
目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...
- 嘉楠k210 多线程 点亮流水灯
from Maix import GPIO from fpioa_manager import fm import _thread import time fm.register(24, fm.fpi ...