如何获取缓存项的到期日期
本文关键字:日期 缓存 何获取 获取 | 更新日期: 2023-09-27 18:02:22
我在MemoryCache中存储了一个对象:
void foo()
{
ObjectCache cache = MemoryCache.Default;
SomeClass obj = cache["CACHE_KEY"] as SomeClass;
if (null == obj )
{
obj = new SomeClass(); ....
CacheItemPolicy policy = new CacheItemPolicy();
//update
policy.AbsoluteExpiration = DateTime.Now+TimeSpan.FromMinutes(1);
cache.Set("CACHE_KEY", obj, policy);
}
else
{
//get expiry date
}
.....
}
如果缓存中包含对象,是否可能以某种方式获取过期日期?
既然您正在设置滑动过期,它不是总是从您访问它的时间10分钟吗?如果对象为空,则缓存条目已经过期,如果不是,则过期时间(在上面的代码中)总是从您检查的时间开始10分钟?
或者你可以有一个基对象(所有可缓存对象都继承它),它的过期时间是在你添加到缓存时设置的属性。提取对象时,要检查属性,并使用过期时间来计算差值。只是一个想法。
如上所述,在将对象保存到内存缓存时保存过期值,
cache.Set(DataKey, DataToStore, policy);
cache.Set("MemCacheExpiry", DateAndTime.Now.AddHours(6), policy);
然后从expiration key读取expiration:
public static DateTime CheckCachedExpiry()
{
DateTime MemCacheExpiryDate = default(DateTime);
MemCacheExpiryDate = Convert.ToDateTime(MemoryCache.Default.Get("MemCacheExpiry"));
return MemCacheExpiryDate;
}