• Spring Cache


    什么是Spring Cache?

      Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,它只提供一整套的接口和代码规范、配置、注解等,用于整合各种缓存方案,比如Caffeine、Guava Cache、Ehcache

      Spring Cache并不是缓存的实现,而是缓存使用的一种方式,其基于注解和Spring高级特性提供缓存读写以及失效刷新等各种能力

     Spring Cache实现:

      在 Spring 3.1 中引入了多 Cache 的支持,在 spring-context 包中定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 两个接口来统一不同的缓存技术。

      Cache 接口包含缓存的常用操作:增加、删除、读取等。CacheManager 是 Spring 各种缓存的抽象接口。

      Spring 支持的常用 CacheManager 如下:

      
    CaffeineCacheManager 使用 Caffeine 作为缓存
    CompositeCacheManager 用于组合 CacheManager,可以从多个 CacheManager 中轮询得到相应的缓存
    ConcurrentMapCacheManager

    默认,使用 java.util.ConcurrentHashMap 来实现缓存

    private final ConcurrentMap<String, Cache> cacheMap = new ConcurrentHashMap<>(16);

    EhCacheCacheManager  
    JCacheCacheManager  
    NoOpCacheManager 仅测试用,不会实际存储缓存
    RedisCacheManager 使用Redis作为缓存
    SimpleCacheManager

    使用简单的 Collection 来缓存

    private Collection<? extends Cache> caches = Collections.emptySet();

     
     
     
     
    Spring Cache使用:
     
     1、开启Spring Cache
        启动类上添加注解 @EnableCaching
      2、
     
     
     
     
      @Cacheable:
        触发缓存读取操作,用于查询方法上,如果缓存中找到则直接取出缓存并返回,否则执行目标方法并将结果缓存。
      @CachePut:
        触发缓存更新的方法上,与 Cacheable 相比,该注解的方法始终都会被执行,并且使用方法返回的结果去更新缓存,适用于 insert 和 update 行为的方法上。
      @CacheEvict:
        触发缓存失效,删除缓存项或者清空缓存,适用于 delete 方法上。
    除此之外,抽象的 CacheManager 既能集成基于本地内存的单体应用,也能集成 EhCache、Redis 等缓存服务器
     
      默认的缓存实现是ConcurrentMapCache
     
     
      @CacheConfig
        当我们需要缓存的地方越来越多,你可以使用@CacheConfig(cacheNames = {"cacheName"})注解在 class 之上来统一指定value的值,这时可省略value,如果你在你的方法依旧写上了value,那么依然以方法的value值为准
        

    END.

  • 相关阅读:
    Jenkins的maven工程打包的时候怎么指定不同环境的配置文件
    杂记待整理
    zabbix监控网络的出入口流量
    MySQL的恢复脚本
    mysql 备份恢复图
    切割haproxy的日志
    zabbix 监控MySQL
    svn 的备份还原
    svn做目录访问控制(AuthzSVNAccessFile)
    MySQL多实例
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/16347159.html
Copyright © 2020-2023  润新知