【发布时间】:2014-07-11 09:20:53
【问题描述】:
我将 .NET api 用于 couchbase。只是想知道如何获取文档的修订号?
干杯
【问题讨论】:
-
为什么要能够得到修订号?此数字仅在内部用于 xdcr 冲突解决。
-
使用并发
-
为什么不使用 CAS?每次修改文档时都会更新。
标签: couchbase
我将 .NET api 用于 couchbase。只是想知道如何获取文档的修订号?
干杯
【问题讨论】:
标签: couchbase
正如 Jeff 上面提到的,您想要做的是使用 cas 值。此值存在于 Couchbase 和 memcached 中,专门用于从不同线程更新同一文档。 cas 只是一个随机数,每次更新文档时都会更改。基本上你想要做的是使用 get() API 获取 cas。这将为您返回请求的键的当前值以及 cas 值。在您的应用程序中,您可以修改您的文档并调用 set() API,但请确保包含 cas 值。当服务器接收到一个带有 cas 值的集合时,它只会在 cas 值与服务器当前拥有的匹配时更新文档。如果 set() 操作失败,那么您知道文档已更改,您可以再次获取文档(并记住新的 cas 值),进行更改,然后再次尝试 set() 文档。
http://docs.couchbase.com/couchbase-devguide-2.5/#check-and-set-cas
【讨论】:
最好的解决方案(不求助于一些甚至可能不存在的低级非推荐方法)只是将修订存储为值的一部分,确定吗?这也将允许在视图中读取它,这可以提供一些实用程序(例如,当另一个完成时通知仅某些等待进程/文档)。
【讨论】: