我当前尝试将项目插入MemoryCache.Default实例,该实例工作。但项目不会过期!轮询间隔默认设置为2分钟,对MemoryCache没有进行特定设置。System.Runtime.Caching中的MemoryCache:项目不会过期
添加项目程序是这样的:
string key = "someKey";
var faultyItem = GetFaultyItemToBlockFromProcessingTheNextThreeMinutes();
if (!MemoryCache.Default.Contains(key))
{
MemoryCache.Default.Add(
new CacheItem(key, faultyItem),
new CacheItemPolicy()
{
AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(3)
});
}
然而,项目从来没有在缓存过期!我等了超过10分钟,他们仍然在缓存中。主要目的是通过尝试每隔几秒处理它们来防止它们使查询淹没数据库。他们每隔几秒检查一次,但没有SlidingExpiration。大约3分钟后应该再次检查,5分钟,因为最大延迟仍然是可以容忍的。
我不想在代码之外做任何配置,使用XML等。如果这是不可能的,是否有一个很好的选择MemoryCache?也许用数字/对象键和通过参数和属性进行配置?
您确定您的环境在UTC时区运行吗?你如何“等待”10分钟? – Algirdas