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