代码之家  ›  专栏  ›  技术社区  ›  Barry MSIH

asp core在内存中缓存sql数据,以便使用控制器进行查询

  •  0
  • Barry MSIH  · 技术社区  · 8 年前

    我有一个静态sql数据集,我想存储在内存中,并从一个控制器进行查询。例如

    var dataRecords = dataList.Where(dl => dl.Contains(x.ToString());
    

    对于Core2.1,我不确定如何做到这一点?

    如果我在控制器中创建一个私有列表,它是否会持续?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Chris Pratt    8 年前

    控制器被实例化并与每个请求一起释放,因此在控制器上设置的内容不会持续到下一个请求。你应该用 IDistributedCache . 只需将其注入控制器即可:

    private readonly IDistributedCache _cache;
    
    public FooController(IDistributedCache cache)
    {
        _cache = cache ?? throw new ArgumentNullException(nameof(cache));
    }
    

    然后,你就用那种方法 GetAsync 和 SetAsync 分别获取/设置缓存中的值。默认情况下,asp.net核心将满足 MemoryDistributedCache ,这对于开发来说很好,但是您将希望在生产中使用诸如redis或sql server之类的东西作为您的后备存储。

    这一切都很清楚 documented .