我在 MVC3 应用程序中使用 System.Runtime.Caching MemoryCache 来缓存很少更改但经常访问的数据。我将absoluteExpiration设置为30分钟。这很好用。每隔 30 分钟,应用程序会使缓存中的数据过期,然后驱逐数据。
下次查询数据时,系统会从数据库中重新加载缓存。
但是,如果缓存被驱逐后数据库暂时不可用怎么办?这将导致 MemoryCache 或数据库中没有可用的记录。理想的做法是使缓存过期,但在确定可以重新加载数据之前不要驱逐数据。如果我无法从数据库重新加载数据,我想将缓存的过期时间延长 5 分钟左右,然后再试一次。最终数据库将恢复。
策略是我宁愿拥有稍微陈旧的数据,也不愿根本没有数据。
我的问题是我应该如何使用 System.Runtime.Caching 创建这样的缓存策略。我没有看到允许我在到期时防止被驱逐的事件。有任何想法吗?