更新文档后如何使Couchbase缓存无效

时间:2020-10-03 16:59:03

标签: spring-boot couchbase spring-data-couchbase

我正在将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>

您能否建议一种在存储桶中更新文档后使缓存无效的方法?

1 个答案:

答案 0 :(得分:2)

当更改或删除以前缓存的项目时,您需要使用@CacheEvict逐出。

@CacheEvict(cacheNames="books", allEntries=true) 
public void loadBooks(InputStream batch)

此过程对于从服务器中删除陈旧或未使用的数据很有用。 缓存。与@Cacheable相反,@ CacheEvict区分了 执行缓存驱逐(即,用作触发 从缓存中删除数据)。

有关更多详细信息,请参见https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/integration.html#cache-annotations-evict