SpringBoot之redis中常用的注解

目录

1. @Cacheable

2. @CachePut

3. @CacheEvict


1. @Cacheable

作用是主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 

主要参数说明: 

  1) value : 

  缓存的名称,在 spring 配置文件中定义,必须指定至少一个

  例如:@Cacheable(value=”mycache”) 或者 @Cacheable(value={”cache1”,”cache2”}。

  2) key :缓存的 key,可以为空

  如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合,

  例如:@Cacheable(value=”testcache”,key=”#userName”)。 

  3) condition :缓存的条件,可以为空

案例如下:

service层

//表示使用my-redis-cache1缓存空间,key的生成策略为book+bid,当bid>10的时候才会使用缓存
    @Cacheable(value = "my-redis-cache1",key = "'book'+#bid",condition = "#bid>10")
    public Book selectByPrimaryKey(Integer bid) {
        return bookMapper.selectByPrimaryKey(bid);
    }

测试代码如下

 @Test
    public void selectByPrimaryKey() {
        Book book = bookService.selectByPrimaryKey(18);
        System.out.println(book);
        System.out.println("---------------------------------------------");
        Book book2 = bookService.selectByPrimaryKey(18);
        System.out.println(book2);
    }

控制台输出

当bid分别为8和18的时候,bid=8是不触发缓存,数据从数据库拿,有sql语句打印;bid=18的时候才会缓存查询结果,从缓存中拿数据,不会有sql语句打印

2. @CachePut

作用是主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实查询

方法的调用 

  主要参数说明:

  参数配置和@Cacheable一样。

3. @CacheEvict

作用是主要针对方法配置,能够根据一定的条件对缓存进行清空

 主要参数说明:

  1)value , key 和 condition 参数配置和@Cacheable一样。

  2) allEntries :

   是否清空所有缓存内容,缺省为 false,

   如果指定为 true,则方法调用后将立即清空所有缓存,

   例如:@CachEvict(value=”testcache”,allEntries=true)。 

  3) beforeInvocation :

   是否在方法执行前就清空,缺省为 false,

   如果指定为 true,则在方法还没有执行的时候就清空缓存,

   缺省情况下,如果方法执行抛出异常,则不会清空缓存,

   例如@CachEvict(value=”testcache”,beforeInvocation=true)

案例如下:

service层代码

 @CacheEvict(value = "my-redis-cache2",allEntries = true)
    public void clear() {
        System.out.println("清空my-redis-cache2缓存槽中的所有对象....");
    }

 测试代码如下

public void clear() {
    bookService.clear();
}

注意:需要测试的话,先往缓存中缓存2个对象

今天的学习就到这了,拜拜!

说明:学习记录,若有错误,欢迎指正,若有疑问,欢迎评论    

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值