微软开源项目Garnet:Redis的竞争者还是替代者?

这篇具有很好参考价值的文章主要介绍了微软开源项目Garnet:Redis的竞争者还是替代者?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于开源社区,最近的一大新闻就是Redis宣布从7.4版本开始,将采用Redis源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)的双重许可证,取代原有的BSD三条款许可证。这一变化引发了开发者社区的热烈讨论,同时也为微软的新开源项目Garnet带来了更多的关注。那么,Garnet究竟是什么?它与Redis有何关系?让我们一起来探讨。

1. Garnet是什么?

Garnet是微软研究院的新开源项目,它是一个远程缓存存储,提供了一系列独特的优势。Garnet采用了Redis的RESP协议作为起点,这使得开发者可以使用大多数编程语言中现成的Redis客户端,例如 .NET 中的StackExchange.Redis,来使用Garnet。相比于其他开源缓存存储,Garnet在性能、延迟、可扩展性和持久性方面有显著的提升。

garnet 微软,.NET,开源软件,数据库,microsoft,开源,redis,Garnet,缓存

2. Garnet的特点

Garnet的特点可以概括为以下几点:

  1. 兼容性:Garnet采用了RESP协议,这使得它可以与大多数现有的Redis客户端无缝对接。

  2. 高性能:Garnet提供了更好的吞吐量和可扩展性,尤其在处理大量客户端连接和小批量数据时,相比于其他开源缓存存储,Garnet的性能有显著提升。

  3. 低延迟:Garnet在普通云(例如Azure)虚拟机上,使用加速TCP,可以实现极低的客户端延迟,这对于实际应用场景至关重要。

  4. 跨平台:Garnet基于最新的.NET技术,可以在Linux和Windows上运行,同时,它也非常易于开发和扩展,而不会牺牲性能。

  5. 丰富的API:Garnet实现了一系列API,包括原始字符串操作(例如gets、sets和key expiration)、分析操作(例如HyperLogLog和Bitmap)、对象操作(例如sorted sets和lists)等。此外,它还支持用户定义自定义操作,降低了开发自定义扩展的难度。

  6. 安全性:Garnet支持使用.NET的SslStream库进行安全的传输层安全(TLS)通信,同时提供基本的访问控制。

  7. 持久性和可恢复性:Garnet的存储层,称为Tsavorite,支持线程可扩展性、分层存储(内存、SSD和云存储)、快速非阻塞检查点、恢复、操作日志记录以及多键事务支持等强大的数据库功能。

  8. 集群模式:Garnet支持集群模式,可以进行分片、复制和动态键迁移。

3. Garnet与Redis的关系

Garnet并非是要取代Redis,而是提供了一个与Redis兼容的、具有一些独特优势的选择。与Redis不同的是,Garnet是基于.NET技术构建的,这使得它在性能和可扩展性上有所提升,同时也使得它更易于开发和扩展。

在Redis宣布许可证变更的同时,微软发布了Garnet,这无疑给开发者社区提供了一个新的选择。对于那些不希望或无法接受Redis新的许可证政策的用户,Garnet可能是一个不错的替代方案。

4. Garnet的部署和使用

Garnet 开源地址:https://github.com/microsoft/garnet?WT.mc_id=DT-MVP-5005195 。开发者可以通过该地址获取Garnet的源代码,并了解更多关于Garnet的信息。

4.1 服务部署

Garnet的服务部署非常简单,Garnet是基于.NET技术构建的,也提供了多种部署方式供开发者灵活的选择。你可以直接将其作为独立的服务自行编译部署,也可以通过 Nugget 包的方式引入并集成到你的项目中,当然官方也贴心的提供了多种 Dockerfile 方便开发者快速部署。这里我们简单介绍一下如何编译并运行 Garnet 服务和如何通过客户端使用。

4.1.1 源码构建

首先,你需要安装 .NET SDK,然后通过 Git 将 Garnet 的源码克隆到本地:

git clone git@github.com:microsoft/garnet.git
cd garnet
dotnet restore
cd main/GarnetServer
dotnet run -c Release -f net8.0

通过上面的命令我们即可快速的启动一个 Garnet 服务,默认情况下,Garnet 侦听 TCP 端口 3278。

garnet 微软,.NET,开源软件,数据库,microsoft,开源,redis,Garnet,缓存

当然我们也可以编译成一个独立的可执行文件,以下是编译 win-x64 平台的示例命令:

dotnet publish -c Release -f net8.0 -r win-x64 -o=publish/win-x64 -p:PublishSingleFile=true -p:PublishTrimmed=true

4.1.2 客户端使用

使用 Garnet 的客户端非常简单,只需要按照 Redis 客户端库的使用方式无缝切换即可。这里我们以 C# 为例,使用 StackExchange.Redis 客户端库来连接 Garnet 服务。

首先,我们需要安装 StackExchange.Redis 客户端库:

dotnet add package StackExchange.Redis

然后,我们可以通过以下代码来连接 Garnet 服务并进行操作:

using System;
using StackExchange.Redis;

class Program
{
    static void Main(string[] args)
    { 
        var connection = ConnectionMultiplexer.Connect("localhost:3278");
        var db = connection.GetDatabase();

        db.StringSet("key", "value");
        var value = db.StringGet("key");

        Console.WriteLine(value);
    }
}

以上只是简单的使用,如果你需要集群等更复杂的配置,请查阅官方文档。

5. 兼容性

需要注意的是,Garnet虽然兼容Redis的RESP协议,但并不是完全兼容Redis的所有功能。在使用Garnet时,开发者需要注意一些细节,例如Garnet不支持Redis的一些命令、数据结构和特性,这可能会对一些应用场景造成影响。因此,在使用Garnet时,开发者需要根据自己的实际需求进行选择。具体的兼容性问题,可以参考Garnet的官方文档关于兼容性的描述。

6. 结论

作为微软的新开源项目,Garnet无疑为开发者社区带来了新的可能性。它的出现并非要取代Redis,而是提供了一个与Redis兼容的、具有一些独特优势的选择。对于开发者来说,Garnet的出现无疑为他们提供了更多的选择,而这对于开源社区的发展来说,无疑是一件好事。如果你正在寻找一个Redis的替代方案,那么Garnet可能是一个不错的选择。文章来源地址https://www.toymoban.com/news/detail-844466.html

到了这里,关于微软开源项目Garnet:Redis的竞争者还是替代者?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索Garnet:微软开源的高性能分布式缓存存储系统

    微软研究院近期宣布推出一款名为Garnet的创新开源分布式缓存存储系统,致力于解决现代应用程序在处理大规模数据时对于高吞吐量、低延迟及卓越可扩展性的严苛要求。这款基于C# .NET 8.0构建的新型系统,充分利用了现代硬件能力,为应用程序开发人员提供了加速数据访问

    2024年04月26日
    浏览(50)
  • 微软最热门的10款前端开源项目!

    本文来盘点微软开源的十大前端项目,这些项目在 Github 上获得了超过 45 万 Star! Visual Studio Code 是一款由微软开发的开源的代码编辑器。它支持多种编程语言,如C、C++、C#、Python、JavaScript 和 TypeScript 等,并提供丰富的插件生态系统来扩展功能。VS Code具有丰富的编辑功能,包

    2024年02月08日
    浏览(31)
  • 微软将推出更多Edge特有功能,与Chrome展开竞争

    微软在 2018 年宣布将推出基于 Chromium 构建的 Edge 浏览器,并于 2020 年 1 月推出了新版 Edge。如今时隔三年,根据统计 Edge 全平台的市场占有率仅为 4.23%,如果只考虑桌面端的话,Edge 的市场占有率则是 10.98%,这两个数据均远远落后于 Chrome 的 64.68% 和 66.14%。 再加上 Edge 如今已

    2024年02月17日
    浏览(48)
  • 开放Gemma而非“开源”,谷歌为何转变大模型竞争策略?

    2月21日晚,谷歌宣布新一代免费可商用大语言模型Gemma在全球开放使用。该模型被谷歌视为自身“最先进的开放模型”。 开放而非开源!!          值得注意的是,谷歌强调Gemma为开放模型,而非“开源”,这意味着 谷歌并不会分享Gemma的多项技术细节,包括Gemma的源代

    2024年03月13日
    浏览(38)
  • Redis的内存淘汰策略有哪些?Redis的发布订阅功能是如何实现的?如何监控Redis的性能?Redis的并发竞争问题如何解决?

    Redis的内存淘汰策略有以下几种: noeviction :不进行任何内存淘汰,当内存用完时,新的写操作将会返回错误。 volatile-lru :在所有已设置过期时间的键中,使用近似LRU算法删除最长时间未使用的键,直到腾出足够的内存空间为止。 volatile-ttl :在所有已设置过期时间的键中,

    2024年02月12日
    浏览(80)
  • 独自开发九年,国人自研项目ioredis被Redis公司收购,开源者的楷模。

              个人真的能改变世界吗?——能。(ioredis被Redis公司收购)             各位技术迷们,有个大新闻得和大家分享一下!国人的骄傲——由@Luin独立研发的ioredis开源Redis客户端,居然被Redis公司给“看中”并正式收入囊中了!这事儿在技术圈子里可是掀起了一

    2024年03月15日
    浏览(62)
  • 微软、OpenAI用上“数据永动机” 合成数据是晨曦还是暮光?

    微软、OpenAI、Cohere等公司已经开始测试使用合成数据来训练AI模型 。Cohere首席执行官Aiden Gomez表示,合成数据可以适用于很多训练场景,只是目前尚未全面推广。 已有的(通用)数据资源似乎接近效能极限,开发人员认为, 网络上那些通用数据已不足以推动AI模型的性能发展

    2024年02月15日
    浏览(35)
  • 开源.NET8.0小项目伪微服务框架(分布式、EFCore、Redis、RabbitMQ、Mysql等)

    为什么说是伪微服务框架,常见微服务框架可能还包括服务容错、服务间的通信、服务追踪和监控、服务注册和发现等等,而我这里为了在使用中的更简单,将很多东西进行了简化或者省略了。 年前到现在在开发一个新的小项目,刚好项目最初的很多功能是比较通用的,所以

    2024年03月09日
    浏览(53)
  • net中winform教程 浏览器控件,还是微软的WebView2最好用

    如果想在Winform项目中使用浏览器控件,可能想到的第一个控件就是微软自带的WebBrowser,可这个不争气的家伙,从出现到现在,没有一丁点的升级,即使身为Net程序员,也不得不对它竖起了中指。不过,好在微软迷途知返,提供了升级控件,才算摆平。不然让Google的Cef控件抢

    2024年02月11日
    浏览(49)
  • Redis实现方式开启新篇章,解决分布式环境下的资源竞争问题,提升系统稳定性

    分布式锁一般有三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包