2

我想知道 Couchbase 是否支持一致的增量计数器。从我在这个文档中读到的,它没有,它只是封装了一个读/写操作,所以你不需要自己做。当然,这对我不起作用,因为自从您从数据库中读取数据以来,数据可能会发生变化。

4

2 回答 2

4

Couchbase 绝对可以,就像 memcached 和 Membase Server 一样,它支持集群内原子的 incr/decr 操作。

cb.set("mykey", 1)
x = cb.incr("mykey") 
puts x #=> 2

incr 正在写入和返回结果值。

“更新操作发生在服务器上,并在协议级别提供。” 意味着它在集群上是原子的,并由服务器执行。

“这简化了两阶段获取和设置操作。” 意味着不是两阶段操作,而是单操作!

于 2012-10-31T01:46:42.150 回答
1

如果您使用的是 Java API,自 2.0 版发布以来,incr 方法已被 counter 方法取代。

您需要使用存储桶的计数器方法。此方法允许您定义计数器文档的名称(包含长类型)和增量。如果文档不存在,它会创建它。许多其他参数在官方文档中定义。

//Obtain the id from counter document and increment it
com.couchbase.client.java.Bucket bucket;
JsonLongDocument joCounter = bucket.counter("counter", 1);

//get the counter long value (might be useful to generate doc id)
long newCounter = joCounter.content();

此操作是原子操作,因此请放心使用计数器。 http://docs.couchbase.com/developer/java-2.0/documents-atomic.html

于 2014-11-30T22:45:41.403 回答