关于安全处理并发 Memcache 更新的 Google Apps Engine 文档:
Memcache 服务的 putIfUntouched 和 getIdentifiable 方法可用于在需要以原子方式更新同一个 memcache 键的同时处理多个请求的情况下,提供一种安全地对 memcache 进行键值更新的方法。(在这些情况下可能会出现竞争条件。)
我正在构建一个需要准确缓存值的应用程序,下面是我的代码,请帮我检查它是否正确:
...
IdentifiableValue oldCountIdValue = mc.getIdentifiable( cacheKey );
Long count = ( Long ) oldCountIdValue.getValue();
if( count != null )
{
this.oldCountValue = oldCountIdValue;
return count;
}
Long result = new Long( q.count() );
mc.putIfUntouched( cacheKey, oldCountValue, result );
return result;
我的问题是:如果 putIfuntouched() 返回 false 怎么办?代码应该返回什么?如何?
当数据存储添加一个实体时,我使用以下内容:
mc.increment( cacheKey, 1, initValue );
这种用法正确吗?
非常感谢。