同時 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 を返すとどうなりますか? コードは何を返す必要がありますか? そしてどうやって?
データストアが 1 つのエンティティを追加するときは、以下を使用します。
mc.increment( cacheKey, 1, initValue );
この使い方は正しいですか?
どうもありがとう。