微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决更新文档后如何使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>

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

解决方法

当更改或删除以前缓存的项目时,您需要使用@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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。