环境准备
首先肯定是需要安装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相同的情况
var code = "e258771e-aae5-46d6-9b16-fd74812c193c"