デクリメントメソッドは指定のキーの値が整数値にパースできる場合、値を減少させます。これらの操作はデータベースの単純な整数値を取得、更新、リセットする操作の必要性を排除するために、プロトコルレベルで提供されています。全てのJavaクライアントライブラリメソッドはデータベース内に保存された値を減少するための明示的なオフセット値の利用をサポートしています。
API Call | client.decr(key, offset) | ||
Asynchronous | no | ||
Description | Decrement the value of an existing numeric key. The Couchbase Server stores numbers as unsigned values. Therefore the lowest you can decrement is to zero. | ||
Returns | long (
Numeric value
) | ||
Arguments | |||
String key | Document ID used to identify the value | ||
int offset | Integer offset value to increment/decrement (default 1) |
decr()
メソッドの一つ目の形式はサーバ側の整数を減少する際に利用する、キーとオフセット値を受け取ります。例えば、サーバ側の整数
dlcounter
を 5
デクリメントする場合次のようになります:
client.decr("dlcounter",5);
指定したキーの更新後の値が戻り値となります。
API Call | client.decr(key, offset, default) | ||
Asynchronous | no | ||
Description | Decrement the value of an existing numeric key. The Couchbase Server stores numbers as unsigned values. Therefore the lowest you can decrement is to zero. | ||
Returns | long (
Numeric value
) | ||
Arguments | |||
String key | Document ID used to identify the value | ||
int offset | Integer offset value to increment/decrement (default 1) | ||
int default | Default value to increment/decrement if key does not exist |
decr()
メソッドの二つ目の形式では、キーが存在する場合、キーの値を指定したオフセット値
でデクリメントし、存在しない場合は指定したデフォルト値
をセットします。これはカウンタ値を記録しているが、キーが存在するか分からない場合に利用できます。
例えば、キー dlcounter
が存在しない場合、次のコードは1000を返します:
long newcount = client.decr("dlcount",1,1000); System.out.printf("Updated counter is %d\n",newcount);
後続の同一の呼び出しでは、dlcount
が既に存在しているので、999が返ります。
API Call | client.decr(key, offset, default, expiry) | ||
Asynchronous | no | ||
Description | Decrement the value of an existing numeric key. The Couchbase Server stores numbers as unsigned values. Therefore the lowest you can decrement is to zero. | ||
Returns | long (
Numeric value
) | ||
Arguments | |||
String key | Document ID used to identify the value | ||
int offset | Integer offset value to increment/decrement (default 1) | ||
int default | Default value to increment/decrement if key does not exist | ||
int expiry | Expiry time for key. Values larger than 30*24*60*60 seconds (30 days) are interpreted as absolute times (from the epoch). |
decr()
メソッドの三つ目の形式では、デフォルト値に加えて保存する値の有効期限を指定できます。例えば、カウンタをデクリメントする際に、値が存在しない場合のデフォルト値を1000とし、1時間の有効期限を付けます(3600秒):
long newcount = client.decr("dlcount",1,1000,3600);
有効期限付きの値については次を参照してください。「有効期限」
API Call | client.asyncDecr(key, offset) | ||
Asynchronous | yes | ||
Description | Decrement the value of an existing numeric key. The Couchbase Server stores numbers as unsigned values. Therefore the lowest you can decrement is to zero. | ||
Returns | long (
Numeric value
) | ||
Arguments | |||
String key | Document ID used to identify the value | ||
int offset | Integer offset value to increment/decrement (default 1) |
非同期の asyncDecr()
メソッドでは応答を待たずに値のデクリメントが可能です。これは更新後の値を知る必要がなく、単にデクリメントを実行して処理を継続したい場合に便利です。
例えば、非同期に指定のキーをデクリメントします:
OperationFuture<Long> decrOp = client.asyncDecr("samplekey",1,1000,24000);