2012-10-30 24 views
1

我想知道Couchbase是否支持一致的增量計數器。從我在this doc中讀到的內容看,它並沒有,它只是封裝了一個讀/寫操作,所以你不需要自己做。當然這對我不起作用,因爲從你從數據庫中讀取數據的時候數據可能會改變。Couchbase中的原子計數器

回答

3

Couchbase絕對不會像memcached和Membase Server那樣,它支持在一個集羣內自動進行incr/decr操作。

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

incr正在寫入並返回結果值。

「更新操作發生在服務器上,並在協議級別提供。」表示它在羣集上是原子的,並由服務器執行。

「這簡化了本來是兩階段的獲取和設置操作。」意味着而不是的兩個階段的操作,它是一個單一的操作!

0

如果您使用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