有什么方法可以将MemoryCache过期时间暂停一段时间吗

本文关键字:时间 过期 暂停 一段时间 MemoryCache 什么 方法 | 更新日期: 2023-09-27 18:26:26

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

我可以丢弃我所有的项目,并逐个更改过期策略,但我担心,考虑到我的缓存中有数十万甚至数百万个项目,从性能角度来看,这是不可行的。

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

任何想法都将不胜感激。

有什么方法可以将MemoryCache过期时间暂停一段时间吗

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

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

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

祝你好运-Srini