2

Couchbase が一貫したインクリメンタル カウンターをサポートしているかどうかを知りたかったのです。このドキュメントで読んだことから、そうではありません。読み取り/書き込み操作をカプセル化するだけなので、自分で行う必要はありません。もちろん、データベースからデータを読み取ってからデータが変更される可能性があるため、これはうまくいきません。

4

2 に答える 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 に答える