Spring Cache:驱逐多个缓存

Posted

技术标签:

【中文标题】Spring Cache:驱逐多个缓存【英文标题】:Spring Cache: Evict multiple caches 【发布时间】:2014-10-12 07:06:08 【问题描述】:

我正在使用 Spring Cache 抽象,并且定义了多个缓存。有时,当数据发生变化时,我想驱逐多个缓存。 是否可以使用 Spring 的 @CacheEvict 注释来驱逐多个缓存?

【问题讨论】:

【参考方案1】:

你可以这样做:

@Caching(evict = 
    @CacheEvict("primary"),
    @CacheEvict(value = "secondary", key = "#p0")
)

查看Reference了解详情

【讨论】:

如果 1 是 @CachePut 而另一个是 @CacheEvict 怎么办?【参考方案2】:

保持简洁:您可以通过在@CacheEvict 注解中枚举多个缓存来驱逐多个缓存:

@CacheEvict(value =  "cache1", "cache2" , allEntries = true)

【讨论】:

好吧,假设您希望将相同的附加参数 (allEntries = true) 应用于您指定的所有缓存。根据我的经验,这种情况并不常见。 你会如何处理使用这种语法的键? 可以提到这样的键@CacheEvict(value = "cache1", "cache2" , key = "key")

以上是关于Spring Cache:驱逐多个缓存的主要内容,如果未能解决你的问题,请参考以下文章

Spring使用缓存

apollo-cache-inmemory 的驱逐规则是啥?

Spring Cache

springboot整合spring @Cache和Redis

Redis 上的哈希缓存驱逐

springboot开启Cache缓存