有没有办法在一段时间内暂停MemoryCache到期?

时间:2014-10-13 21:19:20

标签: c# .net memorycache

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

我可以抛弃我的所有项目并逐个更改过期策略,但我担心,鉴于我在缓存中有数十万甚至数百万的项目,这不会从绩效角度出发。

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

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

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

您的自定义策略扩展对象应该有委托来订阅应用程序进程事件以使项目到期。

祝你好运 -Srini