我正在将Couchbase用作我的Spring Boot应用程序的缓存。 但是更新我的文档后,我应该等待缓存过期才能刷新。因此基本上删除或更新任何文档都不会使其无效。
这是我的spring数据存储库:
public interface ConfigurationRepository extends CouchbaseRepository<Configuration, String> {
@Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter}")
@Cacheable(value = "Configuration_", unless = "#result == null")
Optional<Configuration> getConfiguration();
}
我的配置:
spring.cache.cache-names=Configuration_
spring.cache.couchbase.expiration=10s
我的文档:
public class Configuration implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id = UUID.randomUUID().toString();
public List<ConfigElement> properties;
@Version
private long version;
}
我的依赖性:
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>couchbase-spring-cache</artifactId>
<version>2.1.0</version>
</dependency>
您能否建议一种在存储桶中更新文档后使缓存无效的方法?
答案 0 :(得分:2)
当更改或删除以前缓存的项目时,您需要使用@CacheEvict逐出。
@CacheEvict(cacheNames="books", allEntries=true)
public void loadBooks(InputStream batch)
此过程对于从服务器中删除陈旧或未使用的数据很有用。 缓存。与@Cacheable相反,@ CacheEvict区分了 执行缓存驱逐(即,用作触发 从缓存中删除数据)。