2015-06-29 33 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。