c#如何将数据缓存至Redis

环境准备

首先肯定是需要安装redis啦!这是我跑在docker的redis,和安装在本地的是 一样的效果

可视化工具Redis Desktop Manager。

 c#如何将数据缓存至Redis_第1张图片

使用方法

第一步,安装nuget包

Microsoft.Extensions.Caching.StackExchangRedis

c#如何将数据缓存至Redis_第2张图片

 创建一个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> 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(s);
        }

        return person;
    }

打个断点看看,_distributedCache.GetStringAsync("Person" + id);从redis拿一个Persion1

c#如何将数据缓存至Redis_第3张图片

第一次获取,数据肯定是不存在的,获取到后通过

await _distributedCache.SetStringAsync("Person" + id,JsonSerializer.Serialize(person));

把数据存到redis中,查看我们的redis

c#如何将数据缓存至Redis_第4张图片

 再次获取同一条数据,此时就在redis中拿到了刚刚缓存的数据

 这里的cache person 这些key命名都不是固定的,具体看实际业务设计,避免和其他冲突出现key相同的情况

你可能感兴趣的:(c#,缓存,redis,.netcore)