第十三章:SpringBoot2.3.0 @Cacheable和@CacheEvict声明式注释缓存,自定义KeyGenerator生成策略

一)基于声明式注释的缓存

@Cacheable:触发​​缓存填充。

@CacheEvict:触发​​缓存删除。

@CachePut:更新缓存,而不会干扰方法的执行。

@Caching:重新组合要应用于一个方法的多个缓存操作。

@CacheConfig:在类级别共享一些与缓存相关的常见设置。

 

二)@Cacheable

含义:当调用该注解声明的方法时,会先从缓存中查找,判断是否有key相同缓存的数据,如果有,就直接返回数据,如果没有,执行方法,然后把返回的数据以键值的方式存储到缓存中,方便下次同样参数请求时,直接从缓存中返回数据。

 

@Cacheable支持如下几个参数:

cacheNames:缓存位置的一段名称,不能为空,和value一个含义。

value:缓存位置的一段名称,不能为空,和cacheNames一个含义。

key:缓存的key,默认为空,表示使用方法的参数类型及参数值作为key,支持SpEL。

keyGenerator:指定key的生成策略。

condition:触发条件,满足条件就加入缓存,默认为空,表示全部都加入缓存,支持SpEL。

 

默认秘钥生成

由于缓存本质上是键值存储,因此每次调用缓存方法都需要转换为适合缓存访问的键。

缓存抽象使用KeyGenerator基于以下算法的简单方法:

1、如果没有给出参数,则返回SimpleKey.EMPTY

2、如果仅给出一个参数,则返回该实例。

3、如果给定多个参数,则返回SimpleKey包含所有参数的参数。

只要参数具有自然键并实现有效hashCode()equals()方法,此方法就适用于大多数用例。

使用方式

// 可定义多个key
@Cacheable(cacheNames = {"name1", "name2"})
public User listUsers(User user) {...}

 

自定义秘钥生成

当默认秘钥生成方式不满足需求时,可自定义秘钥生成方式。要提供其他默认密钥生成器,您需要实现org.springframework.cache.interceptor.KeyGenerator接口。

使用方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值