Spring缓存:清除多个缓存

42

我正在使用Spring Cache抽象,并且定义了多个缓存。有时,当数据变化时,我希望清除多个缓存。 是否有使用Spring的@CacheEvict注释清除多个缓存的方法?

2个回答

84

你可以这样做:

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

请查看参考文献以获取详细信息。


如果一个是@CachePut,另一个是@CacheEvict,该怎么办? - Satish Patro
3
这个的 Kotlin 版本是: @Caching(evict = [ CacheEvict("primary"), CacheEvict(value = ["secondary"], key = "#p0") ]) - Jonas Pedersen

53

保持紧凑:您可以在@CacheEvict注释中枚举多个缓存以将它们逐一删除:

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

1
好吧,假设您希望相同的附加参数(allEntries = true)适用于您指定的所有缓存。根据我的经验,这种情况并不经常发生。 - Madbreaks
你会如何处理具有这种语法的键? - Bilal Ahmed Yaseen
3
可以像这样提及键 @CacheEvict(value = { "cache1", "cache2" }, key = "key") - YohanK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接