2

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

我可以扔掉我所有的物品并一个一个地更改过期策略,但我担心我在缓存中有数十万甚至数百万的物品,这将无法从绩效视角。

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

任何想法,将不胜感激。

4

1 回答 1

0

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

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

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

祝你好运-斯里尼

于 2015-01-09T15:16:21.897 回答