如何取消缓存项目的到期时间

时间:2015-03-06 12:19:07

标签: c# caching memorycache

我在MemoryCache中添加了一个缓存项,每10分钟后过期一次。但是当它过期时,我正在调用一种从数据库中获取新数据的方法。再次使用相同的密钥在MemoryCache中设置新的缓存项。但是如果在Cache项中删除了异常,则会删除回调方法,然后从MemoryCache中删除该项,但不会将新项添加到缓存中。此缓存项用于进一步的操作。 如何处理这种情况?

1 个答案:

答案 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;
            }
        }
    }