1

在 Windows Azure 共享缓存中:
假设我执行以下操作:

try
{
  mCache.Remove(key);
  Trace.WriteLine("removed successfully from Azure Shared Cache");
}
catch (DataCacheException e)
{
  WorkerRole.log.Info(e.ToString());
}

是否可以说如果代码到达Trace.WriteLine命令,则操作成功完成?(否则,它会抛出DataCacheException.

我知道我可以注册到事件CacheOperationCompleted,但是我的代码可以作为测试操作成功的一个很好的替代方案吗?(用于放置/删除方法)。

谢谢

4

1 回答 1

1

Remove方法返回boolean标志,指示由给定标识的项目是否key已被删除(true)或没有(false)。

因此,如果您想检查操作结果,我建议您采用以下方法:

if(mCache.Remove(key))
{
    Trace.WriteLine("removed successfully from Azure Shared Cache");
}

Put方法而言,这可能有点复杂。

基本上,如果您的cache.Put(key, value)方法成功完成(没有例外),您可以假设您的项目已添加到缓存中。

但是,可以从缓存中逐出Azure 缓存项(这取决于缓存大小和项过期时间 - 对于共享缓存,默认项过期时间为 48 小时)

因此,为了避免任何“意外”,我建议缓存使用模式如下:

  • 通过键从缓存中获取项目
  • 如果缓存返回Null,则创建该项目并将其放入缓存中
  • 对项目执行操作

另外作为旁注,我建议使用角色内缓存而不是共享缓存服务(主要是因为它更便宜,具有更多功能等)。

于 2013-01-22T09:30:31.173 回答