首页 文章

重置/更新Couchbase计数器的TTL

提问于
浏览
1

(这是一个非常简单的问题 - 可以通过尝试来回答 - 但由于文档没有明确说明,我想我会在这里记录它)

当我设置一个新的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 回答

  • 2

    不,第二个 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文档 - 第二次调用set()将删除TTL .

相关问题