2016-05-17 9 views
0

私は、次のないプログラムがあります。Couchbaseのは、原子インクリメント(続く)(取得)

  1. キーがGETを使用してCouchbaseの中に存在しているかどうかをチェック()

  2. その存在する場合、その後に何もしないで、呼び出し元のアプリケーションにfalseを返します。

  3. キーが存在しない場合は、したがって、基本的

1の値でそれをインクリメントし、インクリメントして作成された私のキーの値が(イム常に1になり、実際に文句を言わないインクリメントしますアトミシティを使用してキーを作成する場合は、Incrementを使用します)。

私の質問は、Get()操作が3つの要求から同じ時刻に呼び出された場合です。

最初の要求は鍵をインクリメントするのに成功し、残りの2つの要求に対して上記の2番のポイントが適用されますか?

または

は、すべての3つの要求は、ポイント番号1に直面し、キーを3回インクリメントしますか..?

私はcouchbaseに.NET SDKを使用しています。

答えて

1

現在使用している一連の操作の代わりに、挿入機能を使用してください。挿入は単一のキーに関して原子的なので、1つのセッションだけが成功し、他のすべての同時/後続の挿入は失敗します。

var result = await bucket.InsertAsync("key", 1); 

操作が成功した場合、アイテムは前に存在しなかったし、それがエラーコードKEY_EXISTSで失敗した場合、正常値1で作成されたが、その項目は、おそらく何もないかの値が1で、既に存在していましたそれ以外は変更しました。

+0

作品ご助力ありがとうございます.. !とても有難い ! – Neville

関連する問題