maven导包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
在resources下创建ehcache配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">
<diskStore path="java.io.tmpdir/Tmp_EhCache" />
<!-- 默认配置 -->
<defaultCache maxElementsInMemory="5000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120"
memoryStoreEvictionPolicy="LRU" overflowToDisk="false" />
<!--自定义缓存配置-->
<!--最大缓存时间 最大缓存数-->
<cache name="baseCache" maxElementsInMemory="10000"
maxElementsOnDisk="100000" />
</ehcache>
2. name:缓存名称。
3. maxElementsInMemory:缓存最大个数。
4. eternal:对象是否永久有效,一但设置了,timeout将不起作用。
5. timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
6. timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
7. overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
8. diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
9. maxElementsOnDisk:硬盘最大缓存个数。
10. diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
11. diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
12. memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
13. clearOnFlush:内存数量最大时是否清除。
14.
在mapper类中缓存需要缓存的数据:
service层:
controller层:切面日志文章链接https://blog.csdn.net/YFSREAD/article/details/81105963 (不看也么关系,不影响缓存,日志只是做了打印显示)
在启动类中开启启动缓存:
数据库值:
调用接口:http://localhost:8080/queryUserById?id=9 ,切面日志打印数据
返回数据
修改数据库:
再次调用接口:http://localhost:8080/queryUserById?id=9 ,第二次切面日志打印数据,直接从缓存中获取,没有访问数据库。
清除缓存(当使用多个缓存时,指定清除缓存):