我在MemoryCache中添加了一个缓存项,每10分钟后过期一次。但是当它过期时,我正在调用一种从数据库中获取新数据的方法。再次使用相同的密钥在MemoryCache中设置新的缓存项。但是如果在Cache项中删除了异常,则会删除回调方法,然后从MemoryCache中删除该项,但不会将新项添加到缓存中。此缓存项用于进一步的操作。 如何处理这种情况?
答案 0 :(得分:0)
不是让缓存数据在到期时自动刷新,而是使用GetData方法调用GetFromDataBase,如果缓存没有返回任何内容则调用它。这样,异常将传递回调用代码,下一次调用将(希望)重新填充缓存
ie(请原谅psudocode)
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;
}
}
}