持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
背景
上一篇SpringCache之@Cacheable注解的说明使用 我们讲解了@Cacheable的使用方法及参数的说明。这篇我们讲讲怎么使用SpringCache中的@CacheEvict。
功能说明
我们在日常使用缓存的时候,不仅需要添加缓存,也需要删除缓存。Springcache中如何来实现缓存的删除呢?不错,@CacheEvict就能帮助我们来实现缓存的删除。
说的直白点@CacheEvict就是一个触发器,当我们每次调用被他注解的方法的时候,就会出发这个触发器,来删除他指定的缓存。他和@Cacheable一样,也可以指定一个或多个缓存,也可以自定义缓存的key。
使用示例
接下来,我们看看如何使用@CacheEvict注解
@ApiOperation(value = "清空缓存")
@CacheEvict(value = {"asnavigation","navigation","banner","article",
"grouphistory","groupinformation","groupoverview","imagetext",
"singlepage","systemclosed","rechargeoutlets","links","busroute",
"system_logo"},key="#id.toString()",allEntries = true,beforeInvocation=true)
@GetMapping("/clear")
public ApiResult clearCache(){
ApiResult result = new ApiResult();
result.getData().put("result",redisUtils.clear());
return result;
}
从上面的代码我们可以看到,定义了一个清除缓存的接口,用来清空我们的Cache数据,在其中可以看到他有两个参数:value和allEntries,具体什么意思呢?我们来看一下下面的介绍。
参数
value 参数
value 意思是:指定需要删除的缓存信息
key 参数
和cacheable中的key类似,和value组合生成缓存
allEntries 参数
allEntries 意思是:是否删除整个缓存(value中指定的值),默认是false
当为true时,会把所有value对应的缓存全部删除
当为false时,此时只会删除该key值的缓存
beforeInvocation参数
beforeInvocation的意思是:当执行注解标注的这个方法之前限制性清除缓存的操作,这样就会使得,不管这个方法执行是否成功,该缓存都会被清除。保证了清除缓存的效果。
他的默认值是false。当为false的时候不执行。为true的时候才会执行这个逻辑
好了今天的@CacheEvict就先讲解到这,欢迎大家留言交流,指正。
也希望大家关注我的公众号《coder练习生》