springboot中Cache缓存的使用

首先在POM中导入maven依赖

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

在启动类中添加开启缓存的注解@EnableCaching

@SpringBootApplication
@EnableCaching
public class CommunityApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommunityApplication.class, args);
    }

}

接下来就可以在方法上添加相关的缓存注解了:

@Cacheable:根据方法请求参数对其结果进行缓存(查询)

  • cacheNames/value:缓存的名称
  • key:缓存数据使用的key,默认使用方法参数的值
  • condition:指定符合条件的情况下才缓存;如condition="#id>0" 当id的参数值大于0时加入缓存
  • unless:否定缓存,当unless指定的条件为true,方法的返回值不会被缓存,可以获取到结果进行判断;如unless="#result==null"
  • sync:是否使用异步模式,在多线程环境下,某些操作可能使用相同参数同步调用。默认情况下,缓存不锁定任何资源,可能导致多次计算,而违反了缓存的目的。对于这些特定的情况,属性 sync 可以指示底层将缓存锁住,使只有一个线程可以进入计算,而其他线程堵塞,直到返回结果更新到缓存中。 
  • keyGenerator:key的生成器,可以自己指定key的生成器的组件id
//自定义配置类配置keyGenerator
@Configuration
public class MyCacheConfig {
​
    @Bean("myKeyGenerator")
    public KeyGenerator keyGenerator(){
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                return method.getName()+"["+ Arrays.asList(params).toString() +"]";
            }
        };
    }
}

@CachePut:先调用方法,然后将方法返回的结果缓存起来(更新)

  • value:缓存的名称
  • key:缓存数据使用的key #result.id表示方法返回的结果对象中的id属性

@CacheEvict:默认先调用方法,然后将指定的缓存删除(删除)

  • value:缓存的名称
  • key:指定要清除的数据
  • allEntries =true:清除这个缓存组件中所以的数据
  • beforeInvocation = true:缓存的清除是否在方法之前执行,true表示先清除缓存再执行方法

@Caching:定义复杂的缓存规则​​​​​​​

    @Caching(
        cacheable = {
            @Cacheable()
        },
        put = {
            @CachePut(),
            @CachePut()
        },
        evict = {
            @CacheEvict()
        }
    )
    public 返回值 方法名(参数类型 参数){
        //代码
        return 返回结果;
    }

@CacheConfig("emp"):添加再类上,类中所有的方法共享该缓存名称

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值