首先,还是有必要将Garnet的介绍作为开场白,自Redis宣布闭源后,微软研究院就推出了一款开源缓存产品Garnet。Garnet 是由微软研究院(Microsoft Research)推出的新型远程缓存存储系统,它旨在提供高速、可扩展性和低延迟的性能。Garnet 设计了线程自动伸缩的能力,并支持分片集群执行,具备复制、检查点、故障转移和事务功能。它可以在主存储器以及分层存储(如SSD和Azure存储)上运行,支持丰富的API接口并且具有很强的扩展性。Garnet使用Redis的RESP作为其主要的传输协议,因此可以在大多数编程语言中使用未修改的Redis客户端与Garnet一起使用。
这就意味着,如果之前开发的内容使用的是Redis,那么完全可以不用修改任何代码,就可以转到Garnet上。下面,就以几个案例,看下Garnet如何使用。
安装Garnet很方便,官网下载相应的Releases版本即可,或者也可以下载源码自行编译。
下载完成后,解压缩,会有下面几个文件
打开命令行窗口,定位到目录下,运行GarnetServer.exe,看到下面的内容,表示运行成功了。
garnet支持garnet.conf
和redis.conf
两种配置文件格式,具体请查看官方文档。这里只使用默认配置。
可以看到。默认情况下。端口是6379,与redis默认端口相同,那么就使用几个案例实际演示Garnet的使用。
从网上找个Redis客户端软件Tiny RDM,也是一款开源的Redis客户端。
点击添加新链接,连接名写上garnet。其他都不填写。使用默认值,点击确认。
点击打开连接,可以连上了哦
添加一个新的键值。
也没有任何问题。
那么在实际项目中如何使用呢?也很简单,不需要修改任何代码就可以使用。我找了一个现成的开源项目Admin.SimpleAdmin
,
尝试一下在这个项目中,可不可以正常使用Garnet。
打开SimpleAdmin.Cache项目下的配置文件Cache.Develoment.json
修改下默认配置。为:
{ //缓存设置 "CacheSettings": { "UseRedis": true, //启用redis "RedisSettings": { "Address": "127.0.0.1:6379", //地址 "Password": "", //Redis服务密码 "Db": 0, //默认库 "ClearRedis": true //是否每次启动都清除Redis缓存 } }}
将SimpleAdmin.Web.Entry设置为启动项,然后启动项目。项目启动成功:
配置并运行前端,运行成功后,在Tiny RDM中,就可以看到缓存数据了。这意味着并不需要修改项目中任何的Redis代码。即可使用Garnet。
毕竟吧,上面都是现成的代码。可能与自己的项目并不符合。那么就使用传统方式,自己写代码实践一下。
新建一个控制台程序。
添加依赖包,搜下Redis。看看哪个包用的比较多。
选择StackExchange.Redis
。点击安装。发现已然忘记StackExchange.Redis
如何使用了,问了下Kimi后,写如下代码:
//Console.WriteLine("Hello, World!");
using StackExchange.Redis;
var connectionString = "127.0.0.1";
var port = 6379;
var garnet = ConnectionMultiplexer.Connect($"{connectionString}:{port}");
var db = garnet.GetDatabase();
db.StringSet("mykey", "garnet");
var value = db.StringGet("mykey");
Console.WriteLine($"Value of 'mykey': {value}");
点击运行。控制台输出没任何问题。
查看Tiny RDM。也是正确的。
好啦,Garnet测试就到这里了。
Garnet目前以MIT许可证开源,允许商业使用、修改和分发,通常不需要公开修改后的代码,你也可以将GarNET这样的开源项目改造成符合特定商业需求的产品哦。