如何检查MemoryCache中的项目何时到期?

Mat*_*erg 6 c# caching memorycache

是否可以读取MemoryCache中项目的到期时间?

System.Runtime.Caching.MemoryCache在我从数据库重新加载之前,我使用.NET 将配置信息存储30分钟.作为状态页面的一部分,我想显示特定缓存项目的年龄或它何时到期.

object config = LoadSomeStuffFromDatabase();
CacheItemPolicy cachePolicy = new CacheItemPolicy() { AbsoluteExpiration = DateTime.Now.AddMinutes(30) }; 
Cache.Add("MyConfigKey", config, cachePolicy);

// And now I want to do something like this :-)
DateTime dt = Cache.SomeMagicMethod("MyConfigKey");
Run Code Online (Sandbox Code Playgroud)

今天我正在使用每次重新加载配置时更新的变量.但是从缓存本身读取这些信息会更好.

Dav*_*ine 7

我相信这已经得到了回答:

如何获取缓存项目的到期日期?

如果这不是您想要的,请考虑以下事项:

API不支持从检索缓存项目中恢复策略.由于可以缓存任何对象,因此可以将策略与对象一起缓存,并在需要稍后访问对象时进行一些基于时间的比较.

  • 在我看来,这是一个非常糟糕的 API。将策略缓存为一级条目而不是针对缓存项的元数据是非常糟糕的形式。 (2认同)