我想知道Couchbase是否支持一致的增量计数器。从我在this doc中读到的,它没有,它只是封装了一个读/写操作,所以你不需要自己做。当然这对我不起作用,因为自从您从数据库读取数据时数据可能会发生变化。
答案 0 :(得分:4)
Couchbase绝对可以,就像memcached和Membase Server一样,它支持集群内原子化的incr / decr操作。
cb.set("mykey", 1)
x = cb.incr("mykey")
puts x #=> 2
incr正在写入并返回结果值。
“更新操作在服务器上进行,并在协议级别提供。”表示它在群集上是原子的,并由服务器执行。
“这简化了两阶段获取和设置操作。”表示两阶段操作的 而不是 ,这是一个单一的操作!
答案 1 :(得分:1)
如果您使用的是Java API,那么自版本2.0发布以来,incr方法已被计数器方法取代。
您需要使用铲斗的计数器方法。此方法允许您定义计数器文档的名称(包含长类型)和增量。如果doc不存在,则会创建它。官方文档中定义了许多其他参数。
//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