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