Couchbase が一貫したインクリメンタル カウンターをサポートしているかどうかを知りたかったのです。このドキュメントで読んだことから、そうではありません。読み取り/書き込み操作をカプセル化するだけなので、自分で行う必要はありません。もちろん、データベースからデータを読み取ってからデータが変更される可能性があるため、これはうまくいきません。
質問する
3544 次
2 に答える
4
Couchbase は、memcached や Membase Server と同様に、クラスター内でアトミックに incr/decr 操作をサポートします。
cb.set("mykey", 1)
x = cb.incr("mykey")
puts x #=> 2
incr は、結果の値を書き込んで返します。
「更新操作はサーバー上で行われ、プロトコル レベルで提供されます。」クラスター上でアトミックであり、サーバーによって実行されることを意味します。
「これにより、そうでなければ 2 段階の get および set 操作が簡素化されます。」つまり、2 段階の操作ではなく、1 つの操作です。
于 2012-10-31T01:46:42.150 に答える
1
Java API を使用している場合、バージョン 2.0 のリリース以降、 incr メソッドは counter メソッドに置き換えられました。
バケットのカウンター メソッドを使用する必要があります。このメソッドを使用すると、カウンター ドキュメント (long 型を保持する) の名前とインクリメントを定義できます。ドキュメントが存在しない場合は作成します。他の多くのパラメーターは、公式ドキュメントで定義されています。
//Obtain the id from counter document and increment it
com.couchbase.client.java.Bucket bucket;
JsonLongDocument joCounter = bucket.counter("counter", 1);
//get the counter long value (might be useful to generate doc id)
long newCounter = joCounter.content();
この操作はアトミックであるため、安全にカウンターを使用できます。 http://docs.couchbase.com/developer/java-2.0/documents-atomic.html
于 2014-11-30T22:45:41.403 に答える