缓存注解简介——@Cacheable、@CachePut和@CacheEvict

注解@Cacheable和@CachePut都可以保存缓存键值对,只是它们的方式略有不同,请注意二者的区别,它们只能运用于有返回值的方法中,而删除缓存key的@CacheEvict则可以用在void的方法上,因为它并不需要去保存任何值。

  • @Cacheable:表明在进入方法之前,Spring会先去缓存服务器中查找对应key的缓存值,如果找到缓存值,那么Spring将不会再调用方法,而是将缓存值读出,返回给调用者;如果没有找到缓存值,那么Spring就会执行你的方法,将最后的结果通过key保存在缓存服务器中。
  • @CachePut:Spring会将方法返回的值缓存到缓存服务器中,这里需要注意,Spring不会事先去缓存服务器中查找,而是直接执行方法,然后缓存。
  • @CacheEvict:移除缓存对应的key的值。
  • @Caching:这是一个分组注释,它能够同时应用于其他缓冲的注解。

一般而言,对于查询,我们会考虑使用@Cacheable,对于插入和修改,我们会考虑使用@CachePut,对于删除,我们会考虑采用使用@CacheEvict。

注解@Cacheable和@CachePut

它们的属性:

  1. value:使用缓存的名称。
  2. condition:Spring表达式,如果表达式返回值为false,则不会将缓存应用到方法中,true则会。
  3. key:Spring表达式,可以通过它来计算对应的缓存的key。
  4. unless:Spring表达式,如果表达式返回值为true,则不会将方法的结果放到缓存上。

其中,因为value和key这两个熟悉使用得最多,所以先来讨论这两个属性。value是一个数组,可以引用多个缓存管理器,而对于key则是缓存中的键,它支持Spring表达式,通过Spring表达式就可以自定义缓存的key。

注解@CacheEvict

注解@CacheEvict主要是为了移除缓存的键值对,主要对于那些删除的操作,先来了解它存在哪些属性。
value和key与之前的@Cacheable和@CachePut是一致的,而属性allEntries要求删除缓存服务器中所有的缓存,这个时候指定的key将不会生效,所以这个属性要慎用。

  • value:要使用缓存的名称
  • key:指定String表达式返回缓存的key
  • condition:指定String表达式,如果返回为true,则执行移除缓存,否则不执行。
  • allEntries:如果为true,则删除特定缓存所有的键值对,默认值为false。
  • beforeInvocation:指定在方法前后移除缓存,如果指定为true,则在方法前删除缓存;如果为false,则在方法调用后删除缓存。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值