Springboot与缓存

作者: 椰子奶糖 | 来源:发表于2019-07-14 20:08 被阅读39次

缓存

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;

相关文章