1. 简介
    1. 缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。
    2. 该项目提供了2中缓存机制,redis和ehcache
  2. spring-cache
    1. 它本质上不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,
    2. 通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果
    3. 特点
      1. 能够使用 SpEL(Spring Expression Language)来定义缓存的 key 和各种 condition
      2. 支持和主流的专业缓存例如 EHCache、redis集成
    4. 注解形式
      1. /spring-shiro-training/src/main/java/com/wangzhixuan/service/impl/TestService.java
      2. @Cacheable缓存方法返回的值
    5. 编码形式
      1. /spring-shiro-training/src/main/java/com/wangzhixuan/task/TestTask.java
      2. Cache cache = cacheManager.getCache("hour");
  3. ehcache
    1. 配置文件ehcache.xml,配置缓存时间
    2. 流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大
    3. 直接在jvm虚拟机中缓存,速度快,效率高
    4. 但是缓存共享麻烦,集群分布式应用不方便
  4. redis
    1. 通过socket访问到缓存服务
    2. 效率比ecache低,比数据库要快很多
    3. 处理集群和分布式缓存方便,有成熟的方案。
  5. spring-cache集成缓存
    1. 切换两种缓存
      1. <import resource="classpath:spring/spring-ehcache.xml"/> <!-- <import resource="classpath:spring/spring-redis.xml"/> -->
      2. 只需要注释掉其中一个即可
      3. 以后需要用到缓存,直接复制一个用即可,很方便
  6. 使用建议
    1. 如果是单个应用或者对缓存访问要求很高的应用,用ehcache。
    2. 如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。