2015-06-29 32 views
1

(這是一個非常簡單的問題 - 一個可以通過嘗試來回答 - 但是由於文檔是不明確的這件事,我想我會在這裏記錄吧)重置/更新TTL的Couchbase計數器

當我設置一個新的TTL'd couchbase計數器(例如在python中使用incr()) - 然後用另一個 TTL值重新計入()計數器,密鑰的TTL是否會重置爲新值?

這裏問這個的另一種方式:

如果我運行下面的代碼:

cb.incr(key='mykey',amount=1,initial=1,ttl=10) //10 seconds TTL 
cb.incr(key='mykey',amount=1,initial=1,ttl=100) //will this update the TTL? 

將琴鍵10或100秒後會過期嗎?

Python庫文檔:http://docs.couchbase.com/sdk-api/couchbase-python-client-1.2.3/api/couchbase.html

回答

0

不,第二個incr操作確實不是更新了TTL。如果您確實想要更改TTL,請使用touch命令。

注意這與原始memcached協議的行爲相匹配 - 參見例如How does incr work with expiry times?

1

因此,答案是否定的:第二個呼叫到INCR()不更新TTL,但將成功地遞增計數器。

令人困惑的是,這對於.set()API(或upsert()API)來說並不正確。例如,下面的代碼

print cb.set('hello',{'hi':'there'},ttl=1) 
print cb.set('hello',{'hi':'there'}) 

將導致與非TTL'd DOC - 該第二呼叫設置()刪除TTL。