我正在使用 .NET 的 MemoryCache 类在我的应用程序中缓存数据。在大多数应用程序用例中,绝对和/或滑动过期缓存策略非常适合我的应用程序。但是,在某些时间段,应用程序可能会启动一个长时间运行的进程,该进程不会更新任何应用程序数据。该过程通常很长,以至于缓存会在此过程中过期并清除缓存的数据,而这正是我真正希望数据保留在缓存中的时候。有什么方法可以暂时暂停 MemoryCache 的过期和/或清理?
我可以扔掉我所有的项目并一个接一个地更改过期策略,但恐怕考虑到我在缓存中有数十万(如果不是数百万)项目,那不会从性能角度工作。
一种想法是在 CacheEntryRemovedCallback 中将项目放回缓存中,但这似乎是在与系统作斗争而不是使用它,并且不会是线程安全的。
如有任何想法,我们将不胜感激。
Memcached 或 NCache 是平面内存缓存系统,它以类似的方式支持过期。您的数据/缓存提供商 Lib 必须具有智能才能在到期时重新填充它。
您可以对 MemoryCache 使用 InfiniteAbsoluteExpiration 策略,但它会永远存在。或者编写自己的缓存库。 MemoryCache 使用计时器进行过期检查。您可以让您知道的版本使用扩展逻辑为您完成。
您的自定义策略扩展对象应该有委托(delegate)来订阅应用程序处理事件以使项目过期。
祝你好运-斯里尼
我是一名优秀的程序员,十分优秀!