重置/更新Couchbase计数器的TTL

时间:2015-06-29 15:10:14

标签: python 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

2 个答案:

答案 0 :(得分:2)

不,第二次incr操作更新TTL。如果您确实想要更改TTL,请使用touch命令。

请注意,这与原始memcached协议的行为相匹配 - 请参阅例如How does incr work with expiry times?

答案 1 :(得分:1)

所以答案是否定的:第二次调用incr()不会更新TTL,但会成功递增计数器。

相当令人困惑的是,对于.set()API(或upsert()API)来说并非如此。例如,以下代码

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

将导致非TTL文档 - 第二次调用set()会删除TTL。