java - 如何使用 spring-data-couchbase 为特定 Couchbase 文档设置 TTL?

标签 java couchbase ttl spring-data-couchbase content-expiration

如何使用 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/

相关文章:

java - 无法在 Eclipse 插件开发中为我的编辑器创建文本悬停

google-cloud-platform - 是否可以创建在一段时间后自行删除的 gcp 存储桶?

java - JSP 表达式语言中的数组文字?

node.js - 如何通过cbq为Couchbase服务器中具有密码认证的存储桶创建索引?

elasticsearch - 设置复制到远程Elasticsearch集群时出现问题

couchbase - 我可以在 couchbase 中为 2 个存储桶创建相同的索引吗?

Java Map 与 TimeToLive 与每个键/值对相关联

redis - 哪些 maxmemory 策略允许在 Redis 中过期?

java - 带有 Quartz 的 Spring @Autowire

java - 我怎样才能创建一个没有像素化和旧外观的更好看的 GUI?