EhCache 是⼀个⽐较成熟的 Java 缓存框架,最早从 hibernate 发展⽽来, 是进程中的缓存系统,它提 供了⽤内存,磁盘⽂件存储,以及分布式存储⽅式等多种灵活的 cache 管理⽅案,快速简单。 Spring Boot 对 Ehcache 的使⽤提供⽀持,所以在 Spring Boot 中只需简单配置即可使⽤ Ehcache 实现 数据缓存处理。 Spring Cache 相关注解说明 SpringBoot 缓存实现内部使⽤ SpringCache 实现缓存控制,这⾥集成 Ehcache 实际上是对 SpringCache 抽象的其中⼀种实现,这⾥在使⽤ Ehcache 实现缓存控制时相关注解说明如下:
1.在pomxml中引入依赖包
<!-- 引入缓存Ehcache依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
2.src/main/resources ⽬录下添加 ehcache.xml ⽂件
3.在启动⼊⼝类中,添加 @EnableCaching 注解,启动缓存
4.. JavaBean 对象实现序列化
5.在.yml添加缓存配置
## Ehcache缓存配置 cache: ehcache: config: classpath:ehcache.xml
6.缓存配置解释
<!-- 是否保存到磁盘,当系统宕机时 <diskStore path="D:\cache"/>-->
<!-- name:缓存名称。 maxElementsInMemory:缓存最⼤数⽬ maxElementsOnDisk:硬盘最⼤缓存个数。 eternal:对象是否永久有效,⼀但设置了,timeout将不起作⽤。 overflowToDisk:是否保存到磁盘,当系统宕机时 timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。 仅当eternal=false对象不是永久有效时使⽤,可选属性,默认值是0,表示可闲置时间⽆穷⼤。 timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。 最⼤时间介于创建时间和失效时间之间。 仅当eternal=false对象不是永久有效时使⽤,默认是0,也就是对象存活时间⽆穷⼤。 diskPersistent:是否缓存虚拟机重启期数据 diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区⼤⼩。 默认是30MB。每个Cache都应该有⾃⼰的⼀个缓冲区。 diskExpiryThreadIntervalSeconds:磁盘失效线程运⾏时间间隔,默认是120秒。 memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,会根据指定的策略去清理内 存 默认策略是LRU(最近最少使⽤)。你可以设置为FIFO(先进先出)或是LFU(较少使⽤)。 clearOnFlush:内存数量最⼤时是否清除。 memoryStoreEvictionPolicy: 可选策略有: LRU(最近最少使⽤,默认策略) Less Frequently Used,就是例⼦中使⽤的策略,就是⼀直以来最少被使⽤的。 FIFO(先进先出) first in first out,这个是⼤家最熟的,先进先出。 LFU(最少访问次数) Least Recently Used,最近最少使⽤的。 缓存的元素有⼀个时间戳,当缓存容量满了,⽽⼜需要腾出地⽅来缓存新的元素的时候, 那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。 -->