【发布时间】:2012-03-17 14:52:40
【问题描述】:
我在我的 MVC3 应用程序中使用 System.Runtime.Caching MemoryCache 来缓存很少更改但经常访问的数据。我已将 absoluteExpiration 设置为 30 分钟。这很好用。每隔 30 分钟,应用程序会使缓存中的数据过期,然后驱逐数据。
下次查询数据时,系统会从数据库中重新加载缓存。
但是,如果在缓存被驱逐后数据库暂时不可用怎么办?这将导致 MemoryCache 或数据库中没有可用的记录。理想的做法是使缓存过期,但在确定可以重新加载数据之前不要驱逐数据。如果我无法从数据库重新加载数据,我想将缓存的过期时间延长 5 分钟左右,然后再试一次。最终数据库将恢复。
策略是我宁愿有稍微陈旧的数据也不愿完全没有数据。
我的问题是我应该如何使用 System.Runtime.Caching 创建这样的缓存策略。我没有看到允许我在到期时防止被驱逐的事件。有什么想法吗?
【问题讨论】:
标签: c# caching memory absolute cache-expiration