如何使用 spring-data-couchbase 为特定的 couchbase 文档设置 TTL(生存时间)? 我知道有一种方法可以使用文档符号设置到期时间,如下所示 @Document(过期=10)
http://docs.spring.io/spring-data/couchbase/docs/1.1.1.RELEASE/reference/html/couchbase.entity.html
它将为所有通过实体类保存的文档设置 TTL。
但似乎有办法为特定文档设置过期(TTL)时间 “获取并触摸:获取指定文档并更新文档过期时间。” 中提到的 http://docs.couchbase.com/developer/dev-guide-3.0/read-write.html
如何通过 spring-data-couchbase 实现上述功能 即使我可以使用Java SDK实现该功能,也可以。
任何帮助......
最佳答案
使用 Spring data couchbase,这是一种为每个文档配置 ttl 的简单方法。
public class CouchbaseConfig extends AbstractCouchbaseConfiguration {
@Override
protected List<String> bootstrapHosts() {
return Arrays.asList("localhost");
}
@Override
protected String getBucketName() {
return "default";
}
@Override
protected String getBucketPassword() {
return "password1";
}
@Bean
public MappingCouchbaseConverter mappingCouchbaseConverter() throws Exception {
MappingCouchbaseConverter converter = new ExpiringDocumentCouchbaseConverter(couchbaseMappingContext());
converter.setCustomConversions(customConversions());
return converter;
}
class ExpiringDocumentCouchbaseConverter extends MappingCouchbaseConverter {
/**
* Create a new {@link MappingCouchbaseConverter}.
*
* @param mappingContext the mapping context to use.
*/
public ExpiringDocumentCouchbaseConverter(MappingContext<? extends CouchbasePersistentEntity<?>, CouchbasePersistentProperty> mappingContext) {
super(mappingContext);
}
// Setting custom TTL on documents.
@Override
public void write(final Object source, final CouchbaseDocument target) {
super.write(source, target);
if (source instanceof ClassContainingTTL) {
target.setExpiration(((ClassContainingTTL) source).getTimeToLive());
}
}
}
}
关于java - 如何使用 spring-data-couchbase 为特定 Couchbase 文档设置 TTL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31528665/