2

Как установить TTL (время жизни) для конкретного документа couchbase с использованием Spring-data-couchbase? Я знаю, что есть способ установить время истечения срока использования обозначения документа следующим @Document (экспирации = 10)Как установить TTL для конкретного документа Couchbase с использованием Spring-data-couchbase?

http://docs.spring.io/spring-data/couchbase/docs/1.1.1.RELEASE/reference/html/couchbase.entity.html

Он установит TTL для всех документов, кроме как через класс Entity.

Но, похоже, существует способ установить время истечения срока действия для конкретного документа «Получить и коснуться: получить указанный документ и обновить срок действия документа». упоминается в http://docs.couchbase.com/developer/dev-guide-3.0/read-write.html

Как можно достичь выше функциональности через пружинного-данных couchbase Даже если я могу добиться функциональности с помощью Java SDK, все будет в порядке.

Любая помощь .....

ответ

2

Использование Spring-Data-Couchbase, вы не можете установить TTL на конкретном примере. Вставка (мутация) и установка TTL за один раз была бы довольно сложной с учетом шагов транскодирования, которые скрыты в методе CouchbaseTemplatesave.

Однако, если то, что вы хотите сделать, это просто обновление TTL и так уже сохранялся документ (который является тем, что делает getAndTouch), есть способ, который не предполагает какое-либо транскодирования и поэтому может быть применен легко:

  • от CouchbaseTemplate, получить доступ к основному клиенту SDK через getCouchbaseClient()(примечания сейчас SDC построен на вершине предыдущего поколения SDK, 1.4.x, но там будет предварительным SDC-2.0 в ближайшее время ;))
  • Us в SDK, выполните операцию touch на идентификаторе документа, дайте ему новый TTL
  • Метод touch() возвращает OperationFuture (это асинхронный), поэтому обязательно заблокируйте его или учтите, что касание выполнено только в случае уведомления в обратном вызове.
0

Используя Spring couchbase, это простой способ настроить ttl на документ.

общественного класса CouchbaseConfig расширяет 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()); 
     } 
    } 
} 

}

 Смежные вопросы

  • Нет связанных вопросов^_^