如何在 .NET 中使用 Redis缓存
译文链接:https://www.infoworld.com/article/3187905/how-to-work-with-redis-cache-in-net.html
缓存是一种状态管理机制,通常用于提升你的应用程序性能,它很大程度上能够减少一个请求对你系统资源的消耗。
Redis是一个开源的,高性能的,NoSql数据库,它的速度非常快,而且所有的数据都是灌入到内存中,从内存中读写数据的性能开销真的是微乎其微,值得一提的是 Redis 采用的是BSD license,说明你可以将它用于商业和非商业的用途。
Redis是什么,我为什么要用它?
Redis 是最流行的开源,NoSQL,基于内存的数据存储,而且非常🐂的是:它的数据存储支持多个数据结构,eg:strings,hashes,sets,lists 等等,Redis内部也提供了对 复制分发 和 事务 的支持,同时在数据持久化方面也做的非常好。
如果你的应用程序需要读取大量的数据,并且你的机器有很多的空闲内存,在这样的场景下如果你有提升性能的需求,采用 Redis 是一个非常好的选择,将Redis应用到你的程序中操作步骤也是非常简单的,接下来我们会一起讨论下如何去安装,配置和使用。
安装Redis
本篇讨论下如何在 Windows 平台上安装 Redis,安装包可以到 GitHub:https://github.com/MSOpenTech/redis/releases 去下载,在安装的过程中,记得勾选一下 add Redis to the PATH environmental variable
,将 Redis的路径添加到环境变量中,等到安装程序执行完毕之后,可以通过 Run -> service.msc
到 windows 的服务面板去看下 redis service 是否已经安装成功。
使用 Redis Client Sdk
现在 redis 已经成功安装到你的系统中了,接下来你需要一个 client sdk 去连接 redis server 来读取数据,在下面的例子中,我会使用开源的 ServiceStack
这个sdk,接下来在 Visual Studio 中创建一个 Console 应用程序,然后通过 NuGet packkage manager
来安装 ServiceStack.Redis
。
假定现在 ServiceStack.Redis
已经通过 NuGet 成功安装,下面的两个方法展示了连接 Redis server 来发送和读取数据。
private static bool Save(string host, string key, string value)
{
bool isSuccess = false;
using (RedisClient redisClient = new RedisClient(host))
{
if (redisClient.Get<string>(key) == null)
{
isSuccess = redisClient.Set(key, value);
}
}
return isSuccess;
}
private static string Get(string host, string key)
{
using (RedisClient redisClient = new RedisClient(host))
{
return redisClient.Get<string>(key);
}
}
注意 RedisClient 的 Set 和 Get 方法是如何从 Redis 中发送和读取数据的,我准备留给你一件事情,你可以试着修改一下这两个方法让其支持泛型,这样的话你的两个方法就可以支持任何类型了,对吧。
接下来看一下如何在 Main 方法中调用,代码如下:
static void Main(string[] args)
{
string host = "localhost";
string key = "IDG";
// Store data in the cache
bool success = Save(host, key, "Hello World!");
// Retrieve data from the cache using the key
Console.WriteLine("Data retrieved from Redis Cache: " + Get(host,key));
Console.Read();
}
正如我之前所说,Redis的功能特别多,在后续的文章中,我会和大家一起讨论Redis的高级特性,比如说:持久化,发布订阅,失败转移 等等,你也可以利用 RDB (单个压缩文件) 或者 AOF 的方式去持久化数据,那我应该选择哪一种持久化呢?你可以在 高性能,持久化,磁盘IO 这些方面综合权衡一下。
如果想了解 Redis 的更多知识,可以参考官方文档:https://redis.io/documentation