设为首页 加入收藏

TOP

spring-cache
2019-09-17 17:22:57 】 浏览:22
Tags:spring-cache

注解:

  @Cacheable // 在方法调用前,先在缓存中去找,若没有,则在方法调用结束后,放到缓存中,属性cacheNames、key。key中可以使用SpEl表达式,如#id,#root.args[0]

  @CachePut // 每次调用方法,都会刷新缓存。默认是调用方法后刷新;属性可以使用 #result.xx

  @CacheEvict // 清楚缓存

  @Caching // 复杂的配置逻辑

  @CacheConfig // 抽取出同一个service中共同的配置

 

 

SpringBoot-cache缓存原理:

   1、自动配置类;CacheAutoConfiguration

   2、缓存的配置类

    org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration
    org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration
    org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration
    org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration
    org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration
    org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration
    org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
    org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration
    org.springframework.boot.autoconfigure.cache.GuavaCacheConfiguration
    org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration【默认】
    org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration

  3、哪个配置类默认生效:SimpleCacheConfiguration;

  4、SimpleCacheConfiguration给容器中注入了一个CacheManager:ConcurrentMapCacheManager


  5、ConcurrentMapCacheManager可以获取和创建ConcurrentMapCache类型的缓存组件;他的作用将数据保存在ConcurrentMap中;

  默认使用的是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;利用序列化保存;当key-value都是Object的时候,会使用序列化保存,默认是使用JDK的序列化机制

      如何保存为json

      1、引入了redis的starter,cacheManager变为 RedisCacheManager;
      2、默认创建的 RedisCacheManager 操作redis的时候使用的是 RedisTemplate<Object, Object>
      3、RedisTemplate<Object, Object> 是 默认使用jdk的序列化机制

    4)、自定义CacheManager;

    5)、key值命名;

      //存到redis的key值会多一个前缀,默认会将CacheName作为Key的前缀

      cacheManager.setUsePrefix(true);

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇java 工作流项目源码 SSM 框架 Ac.. 下一篇系统架构设计师-软件水平考试(高..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目