SpringBoot缓存注解@Cacheable、@CacheEvict、@CachePut使用

SpringBoot缓存注解@Cacheable、@CacheEvict、@CachePut使用

Spring Cache,从入门到真香

spring cache +redis与直接用redis有什么不同么?

总结:
1@EnableCaching
开启缓存功能,一般放在启动类上。

2@CacheConfig
当我们需要缓存的地方越来越多,你可以使用@CacheConfig(cacheNames = {"cacheName"})注解在 class 之上来统一指定value的值,
这时可省略value,如果你在你的方法依旧写上了value,那么依然以方法的value值为准。

3@Cacheable
@Cacheble注解表示这个方法有了缓存的功能,方法的返回值会被缓存下来,
下一次调用该方法前,会去检查是否缓存中已经有值,如果有就直接返回,不调用方法。
如果没有,就调用方法,然后把结果缓存起来。
这个注解一般用在查询方法上。

4@CachePut
加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用。
它通常用在新增方法上。

5@CacheEvict
使用了CacheEvict注解的方法,会清空指定缓存。
一般用在更新或者删除的方法上。

6@Caching
Java注解的机制决定了,一个方法上只能有一个相同的注解生效。
那有时候可能一个方法会操作多个缓存(这个在删除缓存操作中比较常见,在添加操作中不太常见)。
Spring Cache当然也考虑到了这种情况,@Caching注解就是用来解决这类情况的,大家一看它的源码就明白了。
public @interface Caching {
	Cacheable[] cacheable() default {};
	CachePut[] put() default {};
	CacheEvict[] evict() default {};
}

Spring Cache 和其他缓存中间件有什么不一样,比如redis?
1、集群环境下,每台服务器的spring cache是不同步的,这样会出问题的,spring cache只适合单机环境
2、redis是设置单独的缓存服务器,所有集群服务器统一访问redis,不会出现缓存不同步的情况
3Spring cache是代码级的缓存,他一般是使用一个ConcurrentMap。
也就是说实际上还是是使用JVM的内存来缓存对象的,那么肯定会造成大量的内存消耗。但是使用方便。
4Redis 作为一个缓存服务器,是内存级的缓存。它是使用单纯的内存来进行缓存。
5、spring cache 是基于注解的,对代码侵入比较小,但是支持的api太少了,不能满足大部分业务需求。
6、redis基于api,优点是api类型多,缺点是业务代码入侵
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值