缓存
cache
- 缓存接口,定义缓存操作,实现有:RedisCache、EhCacheCache、ConcurrentMapCache等
cacheManager
- 缓存管理器管理各种缓存(cache)组件
- CacheManager管理多个Cache组件,对缓存真正的CRUD操作在Cache组件中每一个缓存组件有唯一一个名字:
- cacheManager:指定缓存管理器;或者cacheResolver缓存解析器
@Cacheable
- 主要针对方法配置,能够更具方法的请求参数对其结果进行缓存
- @Cacheable:是将方法的运行结果进行缓存,再要相同的数据,直接从缓存中获取,不用调用方法
Cacheable的几个属性:
-
cacheNames/value:指定缓存的名字
-
key:缓存数据使用的key:可以用它来指定。默认是使用方法参数的值 ,方法参数—方法的返回值
编写SpEl:#id;参数id的值 #a0 #p0 #root.args[0] -
keyGenerator:key的生成器,可以自己指定key的生成器的组件id
-
key/keyGenerator:二选一
-
condition:指定符合条件的情况才缓存;
-
unless否定缓存:当其指定的条件为true,方法的返回值就不会被缓存,可以获取到结果的判断 ---> unless="#result==null"
-
sync:是否使用异步模式 * * 原理:
1.自动配置类:CacheAutoConfigration
2. @param id * @return Employee
@CachePut
- 保证方法被调用,又希望结果被缓存
@CacheEvict
- 清空缓存
@EnableCaching
- 开启基于注解的缓存
keyGenerator
- 缓存数据时key生成策略
serlalize
- 缓存数据时value序列化策略
一、搭建基本环境
1.导入数据库文件,创建处department,employee
2.创建JavaBean封装数据
3.整合Mybatis,操作数据库
1.配置数据源信息
2.使用注解版的Mybatis
1)。@MappeerScan指定需要扫描的Mappper接口所在的包
二、快速体验缓存
步骤:
1.开启基于注解的缓存
@EnableCaching
2.标注缓存注解即可
@Cacheable
@CacheEvict
@CachePut
默认使用的是
- ConcurrentMapCacheManager==ConcurrentMapCache;
- 将数据保存在 ConcurrentMap<Object, Object>中
开发中使用缓存中间件;redis、memcached、ehcache;
三、整合redis作为缓存
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
1、安装redis:使用docker;
2、引入redis的starter
3、配置redis
4、测试缓存
原理:CacheManager===Cache 缓存组件来实际给缓存中存取数据
1)、引入redis的starter,容器中保存的是
RedisCacheManager;
2)、RedisCacheManager 帮我们创建 RedisCache 来作为缓存组件;RedisCache通过操作redis缓存数据的
3)、默认保存数据 k-v 都是Object;利用序列化保存;如何保存为json
1、引入了redis的starter,cacheManager变为
RedisCacheManager;
2、默认创建的 RedisCacheManager 操作redis的时候使用的是 RedisTemplate<Object, Object>
3、RedisTemplate<Object, Object> 是 默认使用jdk的序列化机制
4)、自定义CacheManager;
网友评论