SpringBoot之缓存@CacheEvict
2020-07-20 09:29
337 查看
背景:
当我们使用缓存机制后,会存在缓存清理的需求,如果不进行清理,将会造成缓存被大量使用,导致程序奔溃异常。
[code] /** * @CacheEvict缓存清除 * allEntries = true表示清除emp下的所有缓存。 * beforeInvocation 表示缓存数据是否在方法执行之前执行,默认为false代表在方法执行之后执行。 */
1. @CacheEvict的清除缓存使用之allEntries。
当allEntries没有进行设置,将默认清除的内容是函数的参数保持一致。也就是清除的是key为Id的缓存数据。
如果allEntries进行了设置,并且为true时候,就是表示,当调用该函数的时候就会清除emp缓存单元中所有的缓存数据。
[code] /** * @CacheEvict缓存清除 */ @CacheEvict(value = "emp" ,allEntries = true) //默认就是函数的参数Id和上面的保持一致 public void deleteEmp(Integer Id){ System.out.println("进入缓存清除的Employee的Id:"+Id); // employeeMapper.deleteEmp(Id); 看业务需要是否要删除数据库数据还是只需要删除 }
2. @CacheEvict的清除缓存使用之beforeInvocation。
当不设置beforeInvocation的时候,默认为false,表示在方法执行之后进行删除缓存,当设置为true时候,则表示缓存在方法执行之前进行删除。(一般不进行设置,因为在方法执行之后进行删除缓存是有需求的,比如当函数执行异常例如有除数为0的时候,则表示不可以进行缓存的删除)
[code] @CacheEvict(value = "emp" ,beforeInvocation = true) //默认就是函数的参数Id和上面的保持一致 public void deleteEmp(Integer Id){ System.out.println("进入缓存清除的Employee的Id:"+Id); int a=10/0; // employeeMapper.deleteEmp(Id); 看业务需要是否要删除数据库数据还是只需要删除. }
相关文章推荐
- spring boot整合shiro后,部分注解(Cache缓存、Transaction事务等)失效的问题
- SpringBoot整合Redis实现一套CRUD的简单缓存
- 使用springboot实现redis作为mysql缓存
- SpringBoot--使用redis做缓存(2)
- 视频教程-缓存中间件Redis技术入门与应用场景实战(SpringBoot2.x + 抢红包系统设计与实战)-Java...
- 从.Net到Java学习第七篇——SpringBoot Redis 缓存穿透
- redis 在spring boot工程中的应用(四) 图片的读取与缓存 byte string
- 二十四、Springboot对缓存的支持
- 详解SpringBoot缓存的实例代码(EhCache 2.x 篇)
- Spring Boot集成Redis实现缓存
- SpringBoot中Shiro缓存使用Redis、Ehcache的方法
- 高手如何处理缓存:SpringBoot集成Redis实现缓存处理(AOP技术)!
- springboot缓存
- spring-boot整合ehcache实现缓存机制的方法
- SpringBoot AOP控制Redis自动缓存和更新的示例
- Spring Boot集成Redis实现缓存
- SpringBoot (十一) :数据访问springboot整合redis高性能缓存_一点课堂(多岸学院)
- Guava Cache本地缓存在 Spring Boot应用中的实践
- 【Spring Boot】【智能增长】【Lombok】【机器学习模型】【分布式缓存】 | Chat · 预告
- Spring Boot中使用缓存