gpt4 book ai didi

c# - 我可以迭代 .NET4 MemoryCache 吗?

转载 作者:IT王子 更新时间:2023-10-29 04:44:43 25 4
gpt4 key购买 nike

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

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

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

但是官方文档found here状态:

!Important: Retrieving an enumerator for a MemoryCache instance is a resource-intensive and blocking operation. Therefore, the enumerator should not be used in production applications.

肯定有一种简单有效的方法来迭代缓存的项目吗?

最佳答案

到目前为止提出的建议都很好,但我的需求仍然如前所述:迭代缓存的项目。这似乎是一个如此简单的任务,而且我希望缓存内部无论如何都具有某种列表结构。 MemoryCache 的文档和功能集不足。

如上所述,我在我的缓存适配器类中添加了一个列表,它包含对我放置在缓存中的每个项目的引用。如果我需要遍历缓存——不仅仅是为了失效,而是为了收集统计数据等——然后我遍历我的列表。

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com