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

How to invalidate Couchbase cache after update document

我正在使用 Couchbase 作为 spring 启动应用程序的缓存。 但在更新我的文档后,我应该等待缓存过期才能刷新。所以基本上删除或更新任何文档都不会使其失效。

这是我的 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>

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

您需要使用@CacheEvict 在更改或删除之前缓存的项目时逐出它们。

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

This process is useful for removing stale or unused data from the cache. As opposed to @Cacheable, @CacheEvict demarcates methods that perform cache eviction (that is, methods that act as triggers for removing data from the cache).

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