0

我们正在扩展 .NET couchbase 客户端以添加一些额外的功能(类似于事务,或者更确切地说是回滚),我关注的一件事是支持记录锁定。

我知道 check-and-set 会在没有 CAS 值的情况下阻止更新,但我想要做的是通过使用 couchbase 的 getlock 功能来防止脏读(这在 Python 客户端上可用,因此大概服务器,但不是 .NET 客户端)

我的第一个想法是它可能由 REST API 提供,但在做了一些研究之后,它看起来好像 API 只能用于查询视图。我知道 memcached 有一个 telnet 接口,但希望它在那里可用可能太过分了。如果它像在服务器端拨打电话一样简单,我猜它已经在客户端......

可以使用租出模型,但如果功能实在是遥不可及,则宁愿不走这条路。

4

1 回答 1

0

Getl 支持目前尚未在 .NET 客户端中实现 (2/20/13),但计划很快添加 ( http://www.couchbase.com/issues/browse/NCBC-231 )。还要注意的一件事是 getl 不会阻止其他连接读取,而只会阻止其他连接写入锁定的密钥。

另外,我不太明白您为什么要尝试防止脏读,因为 Couchbase 不允许您从副本服务器读取。换句话说,每次读取都将始终返回 Couchbase 中的最新值。

*注意 Couchbase 确实有一个副本读取 api,但是通过调用它,您明确表示您可以得到一个旧项目。

于 2013-02-20T21:06:59.300 回答