如何使用spring-data-couchbase为特定的couchbase文档设置TTL(生存时间)?我知道有办法使用Document notation设置到期时间如下@Document(expiry = 10)
http://docs.spring.io/spring-data/couchbase/docs/1.1.1.RELEASE/reference/html/couchbase.entity.html
它将为通过Entity类保存的所有文档设置TTL .
但似乎有办法为http://docs.couchbase.com/developer/dev-guide-3.0/read-write.html中提到的特定文件"Get and touch: Fetch a specified document and update the document expiration."设置到期(TTL)时间
如何通过spring-data-couchbase实现上述功能即使我可以使用Java SDK实现功能,也没关系 .
任何帮助.....
2 回答
使用Spring-Data-Couchbase,您无法在特定实例上设置TTL . 考虑到隐藏在
CouchbaseTemplate
save
方法中的转码步骤,插入(变异)和一次性设置TTL将会非常复杂 .但是,如果你想要做的只是更新已经存在的文档的TTL(这是
getAndTouch
的作用),有一种方法不涉及任何转码,因此可以轻松应用:从
CouchbaseTemplate
开始,通过getCouchbaseClient()
访问基础SDK客户端( note 现在sdc是基于上一代SDK构建的,1.4.x
,但很快就会有sdc-2.0的预览;))使用SDK,对文档的ID执行
touch
操作,为其提供新的TTLtouch()
方法返回OperationFuture
(它是异步),因此请确保阻止它或者仅在回调中通知时才考虑触摸完成 .使用Spring数据couchbase,这是一种可以为每个文档配置ttl的简单方法 .