0

Couchbase .NET SDK 1.3 を使用しています。

タスクは、値が読み取られてからそのキーの下のデータが DB で変更されていない場合に値を保存し、新しい値が特定の数のノードに永続化/複製されることを確認することです。変更のチェックには、楽観的ロック、つまり Couchbase の CAS メソッドを利用したいと思います。値の永続化/複製が成功するまで同期的に待機する必要があります。

問題は、Couchbase SDKが CAS 値または耐久性要件のいずれかを指定するメソッドを提供していることです。

ExecuteCas(mode, key, value, validfor, cas);
ExecuteStore(mode, key, value, persistTo, replicateTo);

両方を組み合わせる必要があります。方法もありますObserve

Observe(key, cas, persistTo, replicateTo);

それは私が必要としているもののようですが、そのドキュメントはどこにも見つかりませんでした。したがって、特に、メソッドが値が永続化/複製されるのを待つのか、それとも呼び出しの時点でそれをチェックするだけなのかはわかりません。この方法をそのように使用することは有効ですか?

var storeResult = client.ExecuteCas(StoreMode.Set, key, value, TimeSpan.FromSeconds(60), cas);
// check storeResult.Success
var observeResult = client.Observe(key, cas, persistTo, replicateTo);
// check observeResult.Success
4

1 に答える 1

1

公式フォーラムで回答を得ました: https://forums.couchbase.com/t/2199

確かに、Observeメソッドは使用できます。値が永続化/複製されるまでブロックされます。

于 2014-12-03T10:21:00.527 に答える