如何清除ASP.NET Core中的MemoryCache?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (346)

如何从ASP.NET Core正确清除IMemoryCache?

我相信这个类缺少Clear方法,但无论如何应对它?在我的项目中,我正在缓存DocumentRepository的方法24小时,我从数据库中获取了大量的行。但有时我可以更改数据库,所以我想清除IMemoryCache,因为它有垃圾数据。

提问于
用户回答回答于

缓存类和接口没有任何方法可以清除任何一个迭代密钥,因为它不是一个列表,在ASP.NET核心应用程序中,通常使用IDistributedCache接口作为依赖,因为它更容易让你以后从本地内存缓存更改为分布式缓存(例如memd或Redis)。

相反,如果要使特定行无效,则应删除缓存的条目cache.Remove(myKey)

当然,这需要您知道要使其无效的密钥。通常你通过事件来做到这一点。每次更新数据库中的条目时,都会启动一个事件。此事件将被后台服务捕获并导致高速缓存失效。

在本地,这可以使用任何pub / sub库完成。在分布式方案中,您可能希望使用分布式缓存的pub / sub功能(即Redis)。

在查找表(许多值受影响)的情况下,您可以让服务刷新缓存(即使用调度库(如hangfire或quart.net)通过后台任务每隔5到10分钟刷新一次。

家庭工作问题

但是你应该问自己一个问题:如果文件频繁更改,将文档缓存24小时真的是个好主意吗?

加载单个文档需要花费很多时间,将其缓存24小时是否值得?或者更短的时间足够好(15,30,60分钟)?

扫码关注云+社区

领取腾讯云代金券