如何取消缓存项的过期

本文关键字:缓存 过期 取消 何取消 | 更新日期: 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;
            }
        }
    }