zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    黑洞数
    三态门最简单的描述方法
    数据选择器的符号和真值表
    RGB的同步信号
    奇场和偶场在信号格式上的差别
    CPOL与CPHA
    Pixel Replication
    HDMI传输中MCLK的获得
    Protel99 1:1打印PCB
    二极管和整流管
  • 原文地址:https://www.cnblogs.com/oliverBolg/p/10064448.html
Copyright © 2011-2022 走看看