(这是一个非常简单的问题 - 可以通过尝试来回答 - 但由于文档没有明确说明,我想我会在这里记录它)
当我设置一个新的TTL的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 回答
不,第二个
incr
操作不会更新TTL . 如果您确实想要更改TTL,请使用touch
命令 .请注意,这与原始memcached协议的行为相匹配 - 请参阅How does incr work with expiry times?
所以答案是否定的:第二次调用incr()不会更新TTL,但会成功递增计数器 .
相当容易混淆,对于.set()API(或upsert()API)来说并非如此 . 例如,以下代码
将导致非TTL文档 - 第二次调用set()将删除TTL .