我正在使用System.Runtime.Caching.MemoryCache提供的缓存。

我想枚举缓存中的项目,以便这样可以使项目无效(逐出然后重新加载)

foreach (var item in MemoryCache.Default) { item.invalidate() }

但是官方文档found here指出:



当然,必须有一种简单有效的方法来遍历缓存的项目吗?

最佳答案

到目前为止,提出的建议很棒,但是我的需求仍然如前所述:遍历缓存的项目。看起来这是一个简单的任务,并且我希望缓存在内部始终具有某种列表结构。需要docs和MemoryCache的功能集。

因此,如上所述,我在缓存适配器类中添加了一个列表,该列表包含对放置在缓存中的每个项目的引用。如果我需要遍历缓存-不仅是为了使无效,而且还为了收集统计信息等等-那么我遍历列表。

如果放置在缓存中的项目数不变,那么这是一个合理的解决方案。如果数字确实发生变化,则需要通过适配器类插入/删除,以使列表与实际缓存保持同步。杂乱无章,但它有效,并且避免了文档中提到的性能损失。

希望MemoryCache缓存提供程序将在下一个平台版本中充实。

关于c# - 我可以遍历.NET4 MemoryCache吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8023543/

10-11 13:11