SpringBoot 缓存

本文详细介绍了SpringBoot中常用的缓存注解,包括@Cacheable用于方法结果缓存,@CacheEvict用于清除缓存,@CachePut在调用方法时刷新缓存,以及@Caching用于组合复杂缓存规则。还提到了各注解的主要属性及其用法,如keyGenerator、condition、unless等。

主要注解

  • @Cacheable 配置在方法上,可以根据方法对其结果进行缓存
  • @CacheEvict 可以根据key进行对应缓存的清除
  • @CachePut 调用方法的同时刷新缓存
  • @EnableCaching 加载启动类开启基于注解的缓存
  • @Caching 可以定义复杂的缓存

pom坐标

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

@Cacheable注解

@Cacheable针对方法配置,可以根据方法的请求对其结果进行缓存
主要属性:

  • cacheNames/value:缓存的名字,数组形式。
  • key:缓存使用的key,需要唯一,可以编写SpEL表达式。
    如:#id 参数id,#a0 #p0 第一个参数。
  • keyGenerator:key生成器;不能与key同用。
  • condition:指定符合条件的情况下才缓存;使用SpEl表达式。
    如: condition = “#a0=1”:第一个参数的值等于1的时候才进行缓存
  • unless:否定缓存;当unless指定的条件为true,方法的返回值就不会缓存。
  • 如:unless = “#a0!=2”:如果第一个参数的值不是2,结果不缓存
  • sunc: 是否使用异步。
@Cacheable(key = "'" + CacheConst.COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS)
    public Course require(String id) {
        return build(id);
    }

@CachePut注解

属性与@Cacheable类似,但每次调用方法时会更新缓存。可以放在更改的方法上,更新数据并刷新缓存。

@CacheEvic注解

主要属性:

  • key:要清除指定缓存的key。
  • allEntries = true:指定清除这个缓存中所有的数据
  • beforeInvocation = false:默认代表缓存清除操作是在方法执行之后执行
  • beforeInvocation = true:代表清除缓存操作是在方法运行之前执行
 @CacheEvict(key = "'" + CacheConst.COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS)
    public void clearCache(String id) {
        // clear cache
    }

@Caching注解

用于组合复杂的缓存规则

@Caching(evict = {
                    @CacheEvict(key = "'" + CacheConst.COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS),
                    @CacheEvict(key = "'" + CacheConst.COURSE_ONE_BASE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS),
                    @CacheEvict(key = "'" + CacheConst.LIVE_COURSE_ONE_PREFIX + "'+#id", cacheNames = CacheConfig.CacheNames.CACHE_30MINS)
    })
    public void clearCache(String id) {
        // clear cache
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值