环境准备
首先肯定是需要安装redis啦!这是我跑在docker的redis,和安装在本地的是 一样的效果
可视化工具Redis Desktop Manager。
使用方法
第一步,安装nuget包
Microsoft.Extensions.Caching.StackExchangRedis
创建一个asp.net.core项目,在var app = builder.Build();前注入依赖
builder.Services.AddStackExchangeRedisCache(opt =>
{
opt.Configuration = "localhost";
opt.InstanceName = "cache1_";
});
新建一个测试controller,引用刚刚注册的依赖
private readonly IDistributedCache _distributedCache;
public TestController(IDistributedCache distributedCache)
{
_distributedCache = distributedCache;
}
然后编写一个get请求
[HttpGet]
public async Task<ActionResult<Person?>> Test(long id)
{
Person? person;
// 去redis中查找有没有该数据
string? s = await _distributedCache.GetStringAsync("Person" + id);
if (s == null)
{
Console.WriteLine("数据不存在,从数据库中获取");
person = MyDbContext.GetById(id);
Console.WriteLine("把获取的数据存到redis");
await _distributedCache.SetStringAsync("Person" + id, JsonSerializer.Serialize(person));
}
else
{
Console.WriteLine("在redis中找到该数据");
person = JsonSerializer.Deserialize<Person?>(s);
}
return person;
}
打个断点看看,_distributedCache.GetStringAsync("Person" + id);从redis拿一个Persion1
第一次获取,数据肯定是不存在的,获取到后通过
await _distributedCache.SetStringAsync("Person" + id,JsonSerializer.Serialize(person));
把数据存到redis中,查看我们的redis
再次获取同一条数据,此时就在redis中拿到了刚刚缓存的数据
这里的cache person 这些key命名都不是固定的,具体看实际业务设计,避免和其他冲突出现key相同的情况