.net core 使用 redis分布式缓存
2019-08-29 本文已影响0人
_sands
redis大多数场景是用来做缓存的,得益于它的分布式特性,
- 可以部署redis集群,来解决高可用,可扩展性;
- 同时由于数据存储在内存中,所以读取的速度很快;
- 可以定期对数据进行持久化到磁盘中,保证数据不丢失;
- 支持存储丰富的数据结构:string、hash、list、set、基于list还能做成queue结构,能使用的场景非常丰富,
在.net core中应用
- 使用自带的Redis分布式缓存
.netcore 中使用 Microsoft.Extensions.Caching.Redis 中的 DistributedRedisCache就可以了
setup.cs
services.AddDistributedRedisCache(options =>
{
//用于连接Redis的配置
//RedisConnectionString="1270.0.0.1:6379,password=xxxxx"
options.Configuration = Configuration.GetConnectionString("RedisConnectionString");
options.InstanceName = "RedisCache";
});
application 项目中
using Microsoft.Extensions.Caching.Distributed;
public class SmsAppService
{
private readonly IDistributedCache _distributedCache;
public SmsAppService(IDistributedCache distributedCache)
{
}
public void sample()
{
var cache=_distributedCache.GetString("cache:name");
//写入缓存 有效期2分钟
_distributedCache.SetString("cache:name","cache:value", new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(2) });
}
}
- 直接使用StackExchange.Redis客户端
- 引入 nuget包 StackExchange.Redis,直接安装;
- 不用二次封装 直接在项目中使用(redis客户端的API已经写得非常好用了,没必要去写什么RedisHelper类进行过度封装,除非说要在使用的地方加异常处理、监控,可以加个创建客户端的代理类)
eg
using StackExchange.Redis;
void Sample()
{
var db= ConnectionMultiplexer.Connect("127.0.0.1:6379").GetDatabase();
string cache=db.StringGet("cache:name");
}