是否可以在存储操作中同时指定 CAS 值和耐久性要求



我正在使用Couchbase .NET SDK 1.3。

任务是存储一个值,前提是自读取值以来其键下的数据尚未在数据库中修改,并确保新值持久化/复制到一定数量的节点。 对于修改检查,我想使用乐观锁定,即 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

在官方论坛上得到答案:https://forums.couchbase.com/t/2199

事实上,可以使用Observe方法。 它将阻塞,直到值持久化/复制。

最新更新