谷歌应用引擎文档中有关安全处理并发Memcache更新的说明:
putIfUntouched和getIdentifiable方法可以用于提供一种安全地以原子方式更新Memcache键值对的方式,特别是当多个请求正在同时处理需要更新相同memcache键的情况时。(在这些情况下可能会出现竞争条件。)
我正在构建一个需要准确缓存值的应用程序,以下是我的代码,请帮忙检查是否正确:
我的问题是:如果putIfUntouched()返回false,代码应该返回什么?如何返回?
当数据存储添加一个实体时,我使用以下代码:
我正在构建一个需要准确缓存值的应用程序,以下是我的代码,请帮忙检查是否正确:
...
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 );
这个用法正确吗?
非常感谢。