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;

    相关文章

      网友评论

        本文标题:Springboot与缓存

        本文链接:https://www.haomeiwen.com/subject/xkvikctx.html