SpringBoot高级--缓存--Spring缓存抽象

在这里插入图片描述
在这里插入图片描述
@Cacheable:触发缓存人口。
@CacheEvict:触发缓存驱逐。 缓存清楚
@CachePut:在不影响方法执行的情况下更新缓存。访问方法并更新缓存
@Caching:重新组合要应用于方法的多个缓存操作。
@CacheConfig:在类级别上共享一些常见的缓存相关设置

使用步骤

1、在springboot主类中加入**@EnableCaching**注解支持
在这里插入图片描述
2、在方法级别增加 @Cacheable 注解支持以启用缓存
在这里插入图片描述
Cacheable的几个属性
cacheNames/value:指定缓存组件的名字;将方法的返回结果放在哪个缓存中,是数组的方式,可以指定多个缓存;
key:缓存数据使用的key;可以用它来指定。默认是使用方法参数的值1-方法的返回值
编写SpEL; #id;参数id的值#a0、#pθ、#root.args[e]
keyGenerator: key的生成器; 可以自己指定key的生成器的组件id
key/keyGenerator:二选一使用
cacheManager:指定缓存管理器;或者cacheResol ver指定获取解析器
condition:指定符合条件的情况下才缓存;
condition = “#id>0”
condition = “#a0>1”: 第一个参数的值>1的时候才进行缓存
unless:否定缓存;当unless指定的条件为true,方法的返回值就不会被缓存;可以获取到结果进行判断
unless = "#result == null ”
unless = “#a0==2”:如果第一 个参数的值是2,结果不缓存;
sync:是否使用异步模式
注意:开启了异步就不支持unless
在这里插入图片描述
3、自动配置类CacheAutoConfiguration
在这里插入图片描述

包含以下这些类:
GenericCacheConfiguration
EhCacheCacheConfiguration
HazelcastCacheConfiguration
InfinispanCacheConfiguration
JCacheCacheConfiguration
CouchbaseCacheConfiguration
RedisCacheConfiguration
CaffeineCacheConfiguration
SimpleCacheConfiguration
NoOpCacheConfiguration
在这里插入图片描述

默认加载:SimpleCacheConfiguration
这个类注册了一个 ConcurrentMapCacheManager 缓存管理器
在这里插入图片描述
缓存管理器最主要功能就是根据缓存名字查询缓存对象
实现了CacheManager, BeanClassLoaderAware接口,定义一个缓存队列为
private final ConcurrentMap<String, Cache> cacheMap = new ConcurrentHashMap<>(16);
可以获取和创建ConcurrentMapCache类型的缓存组件
在这里插入图片描述
ConcurrentMapCache组件最主要的逻辑就是这个lookup查询逻辑
在这里插入图片描述
我们看一下这个store是什么,估测是个存储对象,看一下吧
在这里插入图片描述
在这里插入图片描述
ok,看,是Map存储的

Cacheable的运行流程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

@CacheEvict注解

在这里插入图片描述

@Caching注解

在这里插入图片描述

@CacheConfig注解

统一指定公共的缓存配置
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值