(这是一个非常简单的问题 - 可以通过尝试来回答 - 但由于文档没有明确说明,我想我会在这里记录它)
当我设置一个新的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 :(得分: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。