首页 > 数据库 >Garnet:微软官方基于.NET开源的高性能分布式缓存存储数据库

Garnet:微软官方基于.NET开源的高性能分布式缓存存储数据库

时间:2024-05-15 21:09:31浏览次数:14  
标签:缓存 项目 Garnet Redis 开源 https 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性能优势

我们预配两个运行 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 个百分位数:

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看

标签:缓存,项目,Garnet,Redis,开源,https,NET
From: https://www.cnblogs.com/Can-daydayup/p/18194700

相关文章

  • .NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)
    对某个远程服务器启用和设置NTP服务(Windows系统)打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer将 Enabled 的值设置为 1,这将启用NTP服务器功能。防火墙开放UDP 123端口打开“服务”应用(可以在开始菜单搜索“服务......
  • 如何把 log4net.config 文件删除, 改成代码实现
    如何把log4net.config文件改成代码?这样在编写winform或者其他客户端的时候就省去了一个配置文件分享下我常用的log4net.config配置文件<?xmlversion="1.0"encoding="utf-8"?><configuration><!--<configSections><sectionname="log4net"typ......
  • ASP.NET Core的全局拦截器(在页面回发时,如果判断当前请求不合法,不执行OnPost处理器)
    ASP.NETCoreRazorPages中,我们可以在页面模型基类中重载OnPageHandlerExecuting方法。下面的例子中,BaseModel继承自PageModel,是所有页面模型的基类。推荐方案:在BaseModel.cs中,重载OnPageHandlerExecuting方法(看下面代码中的注释):publicoverridevoidOnPageHandlerExecuting......
  • Kubernetes - [03] 安装部署
    Kubeadm部署k8s集群  一、准备工作1.1、组件组件:Harbor(私有DockerHub)、Router服务器操作系统:Centos7+(内核3.0+,最好内核4.40+) 1.2、服务器主机名IP地址角色备注ctos79-01192.168.2.131master管理节点ctos79-02192.168.2.132worker ctos79-0......
  • 使用.net 6.0框架的WPF应用如何引用System.Windows.Forms这个dll
    先说结论:能用.nerfx尽量用fx开发,因为很多坑之前的前辈帮你踩过了。。。解决方法是在这个目录下找到你对应版本的System.Windows.Forms这个dllC:\ProgramFiles\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.26\ref\net6.0这个目录每个人版本不一样,想找到最简单的方法就......
  • Kubernetes - [02] 网络通讯方式
    题记部分 一、网络通讯模式  Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中,这在(GCEGoogleComputeEngine)里面是现成的网络模型,Kubernetes假定这个网络已经存在。而在私有云里搭建Kubernetes集群,就不能假定这个网络已经存在了。我们需要自己......
  • asp.net core 跨域
    missingalloworiginheaderasp.netcore在ASP.NETCore中,出现"missingalloworiginheader"错误通常是由于跨域资源共享(CORS)未正确配置所致。该错误的原因是客户端(如浏览器)尝试从不同的域或端口请求资源,而这些资源的访问被服务器限制。为了解决这个问题,你可以使......
  • .NET 缓存:内存缓存 IMemoryCache、分布式缓存 IDistributedCache(Redis)
    .NET缓存里分了几类,主要学习内存缓存、分布式缓存一、内存缓存IMemoryCache#1、Program注入缓存builder.Services.AddMemoryCache();2、相关方法及参数Get、TryGetValue、GetOrCreate、GetOrCreateAsync、Set、Remove,关键参数是过期时间,GetOrCreate、GetOrCreateAsync是通......
  • .net DataGirdView 通过列索引修改单元格字体
    场景是这样、我需要DataGirdView某几列数量大于0字体就变成蓝色,某几列超过标准值字体就变成红色具体列名属性voidInitCols(){varcol=_DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail,"OrderNo","工单号");col.Width=125;......
  • XShell执行systemctl stop network命令后断开连接,并重连失败
    在XShell中执行命令systemctlstopnetwork后,断开了与虚拟机的连接,进行重新连接,显示连接失败,停止虚拟机网络服务后,XShell无法继续连接。需要重启虚拟机的网络服务【1】重启解决systemctlstopnetwork是暂时关闭服务,不是永久的,所以重启后会自启。在主机有网络的情况下,重启......