1

我们在并置模式下运行 Azure 缓存(预览版),我们注意到有时无法在缓存中找到项目或过早过期。

为了更好地理解我的问题,请查看我们日志中的以下输出

2012-07-26 03:14:15,093 [13] DEBUG XXX.CacheBase - Update: XXX-CacheKey-XXX | Abs Exp: 07/26/2012 04:15:15 +00:00 | Sli Exp: 00:00:00
2012-07-26 03:14:17,452 [22] DEBUG XXX.CacheBase - PessimisticFetch - XXX-CacheKey-XXX
2012-07-26 03:24:32,229 [23] DEBUG XXX.CacheBase - PessimisticFetch - XXX-CacheKey-XXX
2012-07-26 03:24:32,245 [23] DEBUG XXX.SomeClass - Item not found in cache: XXX-CacheKey-XXX 

说明:

  1. 第 1 行:插入到具有绝对过期时间的缓存中,注意绝对 ex
  2. 第 2 行:大约一分钟后获取 - 确定
  3. 第 3 行:大约 10 分钟后获取 - 未找到
  4. 第 4 行:报告的项目在缓存中未找到

简而言之,我们使用 GetAndLock / PutAndLock 来存储这些特定项目。这些项目有一个绝对过期时间(1 小时),但从 5 到 10 分钟后,该项目不再在缓存中。

我的 CacheItemPolicy 更令人不安的是我设置了一个删除通知,但这永远不会被触发

//---
cacheItemPolicy.RemovedCallback = ItemRemoved;
//---    

static void ItemRemoved(CacheEntryRemovedArguments args)
{
    _log.DebugFormat("Item evicted from cache: {0}. Reason: {1}", args.CacheItem.Key, args.RemovedReason);
}

我还附上了我们缓存设置的屏幕截图参见图片-> http://i.stack.imgur.com/4ORQQ.jpg

我已经没有什么想法了......任何线索解释,WTF的将不胜感激:)

4

0 回答 0