【问题标题】:upsert with lock doesn' t exist (Couchbase) (.Net SDK 3.0)upsert 不存在 (Couchbase) (.Net SDK 3.0)
【发布时间】:2020-07-22 17:08:21
【问题描述】:

我想通过锁定对 Couchbase(版本 6.5.1 build 6299)进行更新插入。问题是 couchbase 本身的文档似乎不完整。

问题是我可以锁定文件,然后解锁,但在更新插入时我不知道如何使用 Cas。正如文档所述(https://docs.couchbase.com/dotnet-sdk/3.0/howtos/kv-operations.html),我应该如下所示:

var result = await collection.InsertAsync("document-key", document,
    options =>
    {
        options.WithCas(12345);
        options.WithTimeout(TimeSpan.FromSeconds(5));
    }
);

当我尝试这个时,我得到了以下错误: "UpsertOptions 不包含 WithCas 的定义"

有人知道我应该如何管理吗?

【问题讨论】:

  • 代码说 InsertAsync,但你的问题的其余部分说 Upsert。我不认为这是问题所在,但我建议进行编辑以明确您想要哪个。
  • 嗨克里斯托夫! Matthew Groves 发布的答案是正确的。您正在寻找的操作可能是 Replace(或 ReplaceAsync),它确实接受 CAS 值。

标签: c# .net locking couchbase


【解决方案1】:

看起来文档现在有点错误。 InsertAsyncUpsertAsync 不使用 CAS 值。

我的理解是,在以前的 SDK 中,insert/upsert 中的 CAS 值基本上只是被忽略(设置为 0),只有某些操作(如替换)实际上传递了 CAS。所以在 SDK 3 中,这已得到纠正。您不能再指定 CAS,但实际使用它的操作除外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2020-01-24
    相关资源
    最近更新 更多