SpringBoot之缓存@CacheEvict

背景:

当我们使用缓存机制后,会存在缓存清理的需求,如果不进行清理,将会造成缓存被大量使用,导致程序奔溃异常。

    /**
     * @CacheEvict缓存清除
     * allEntries = true表示清除emp下的所有缓存。
     * beforeInvocation 表示缓存数据是否在方法执行之前执行,默认为false代表在方法执行之后执行。
     */

1. @CacheEvict的清除缓存使用之allEntries。

当allEntries没有进行设置,将默认清除的内容是函数的参数保持一致。也就是清除的是key为Id的缓存数据。

如果allEntries进行了设置,并且为true时候,就是表示,当调用该函数的时候就会清除emp缓存单元中所有的缓存数据。

    /**
     * @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的时候,则表示不可以进行缓存的删除)

    @CacheEvict(value = "emp" ,beforeInvocation = true)    //默认就是函数的参数Id和上面的保持一致
    public void deleteEmp(Integer Id){
        System.out.println("进入缓存清除的Employee的Id:"+Id);
        int a=10/0;
    //    employeeMapper.deleteEmp(Id);   看业务需要是否要删除数据库数据还是只需要删除.
    }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值