Springboot-缓存
1.JSR107规范
这些具体的核心接口整合难度有点大,之后整合还是使用Spring缓存抽象
2.交互流程
3.spring缓存抽象
spring给提供的一些缓存技术
4.使用缓存技术
①开启基于注解的缓存@EnableCaching
②@Cacheable,方法级别,直接将方法的返回结果进行缓存
属性:
cacheName/value,指定缓存名字;
key:缓存数据的key,如果不指定那就默认为缓存参数的值;
还可以写SpEL表达式:给了一个form
keyGenerator:key的生成器,可以自己指定key的生成器的组件id,key/keyGenerator二选一
还可以指定缓存管理器cacheManager,或者指定缓存解析器cacheResolver
condition:可以根据条件来判断是否缓存
unless:除非(否定缓存)、与condition是相反的
③CachePut:既调用方法,又使用缓存
在执行标注了@CachePut注解以后的方法,每次尽心dao操作以后还会更新缓存,但是这里要注意,要传key值,不然这个方法没啥有意义
④@CacheEvict
缓存清除:
直接指定key然后,清楚指定区域的缓存,还有删除区域的所有缓存
还有beforeInvocation = true,在删除方法之前清空等等api,那么如果默认是beforeInvocation = false,删除方法一旦抛异常,缓存是不会删除的
⑤@Caching
里面可以指定多个缓存规则,有多少分数据,暂时不管,到时候只用redis
⑥@CacheConfiguration
抽取一些公共的缓存配置
5.redis
在linux下载redis的镜像
可以用
Redis Desktop Manager直接操作redis
关于redis的一系列命令,在官网直接由,比较简单
ref:http://www.redis.cn/commands.html
6.redis-integration
①配置redis主机地址:118.24.44.169
②这里生产了2个templates:一个是stringRedisTemplate,专门为了简化来操作string-value的,还有一个是object-object的k-v:redisTemplate
③直接调用template的api来进行redis操作。这里有很多ops-api来针对不同的值进行redis操作
④如果需要做object的缓存,object要序列化,这个时候redis存的就是object序列化以后的二进制文件
⑤我们也可以把object转为json存到redis里面,什么jackson之类的7788的都可以
7.redis完整演示
①引入redis的starter以后,默认的cacheManager就是RedisCacheManager了,自然创建了RedisCache来缓存数据
@Cache是"通用"注解
不管你使用什么缓存中间件,只要spring支持该技术都是可以用@Cache系列注解的
②这里默认是使用的JDK的序列化器
③使用redis如何设置加前缀,那么key值前面会加一个cacheName作为前缀
④我们也可以不用注解,把CacheManager注入进来使用
tips:就springboot 2.0以上跟1.0在 redis缓存使用上就CacheManager的使用上还是有大的差别,但是还是比较简单的,到时候看文档即可