gpt4 book ai didi

c# - 有什么办法可以让MemoryCache过期暂停一段时间?

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:49 25 4
gpt4 key购买 nike

我正在使用 .NET 的 MemoryCache 类在我的应用程序中缓存数据。在大多数应用程序用例中,绝对和/或滑动过期缓存策略非常适合我的应用程序。但是,在某些时间段,应用程序可能会启动一个长时间运行的进程,该进程不会更新任何应用程序数据。该过程通常很长,以至于缓存会在此过程中过期并清除缓存的数据,而这正是我真正希望数据保留在缓存中的时候。有什么方法可以暂时暂停 MemoryCache 的过期和/或清理?

我可以扔掉我所有的项目并一个接一个地更改过期策略,但恐怕考虑到我在缓存中有数十万(如果不是数百万)项目,那不会从性能角度工作。

一种想法是在 CacheEntryRemovedCallback 中将项目放回缓存中,但这似乎是在与系统作斗争而不是使用它,并且不会是线程安全的。

如有任何想法,我们将不胜感激。

最佳答案

Memcached 或 NCache 是平面内存缓存系统,它以类似的方式支持过期。您的数据/缓存提供商 Lib 必须具有智能才能在到期时重新填充它。

您可以对 MemoryCache 使用 InfiniteAbsoluteExpiration 策略,但它会永远存在。或者编写自己的缓存库。 MemoryCache 使用计时器进行过期检查。您可以让您知道的版本使用扩展逻辑为您完成。

您的自定义策略扩展对象应该有委托(delegate)来订阅应用程序处理事件以使项目过期。

祝你好运-斯里尼

关于c# - 有什么办法可以让MemoryCache过期暂停一段时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349034/

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