如何取消缓存项的过期
本文关键字:缓存 过期 取消 何取消 | 更新日期: 2024-10-23 18:43:51
我在MemoryCache中添加了一个缓存项,该项每10分钟过期一次。但当它过期时,我调用一个从数据库获取新数据的方法&再次使用相同的键在MemoryCache中设置新的缓存项。但如果在Cache item removed回调方法中抛出异常,则从MemoryCache中删除该项,但不会将新项添加到缓存中。此缓存项将用于进一步的操作。如何处理这种情况?
不要在缓存数据到期时自动刷新缓存数据,而是将GetFromDataBase调用与GetData方法放在一起,并在缓存什么都不返回时调用它。通过这种方式,异常被传递回调用代码,下一次调用将(希望)重新填充缓存
ie(请原谅伪码)
public class data
{
public SomeData GetData(int id)
{
if (cache.Contains(id))
{
return cache[id];
}
else
{
SomeData data = GetDataFromDB(id);
cache[id] = data;
return data;
}
}
}