在SpringBoot工程中配置EhCache缓存
1.在src/main/resources下新建ehcache.xml文件
eternal=true //缓存永久有效,false相反
maxElementsInMemory //cache 中最多可以存放的元素的数量。如果放入cache中的元素超过这个数值,有两种情况:1、若overflowToDisk的属性值为true,会将cache中多出的元素放入磁盘文件中。2、若overflowToDisk的属性值为false,会根据memoryStoreEvictionPolicy的策略替换cache中原有的元素
timeToLiveSeconds//为在eternal为false时,缓存失效的时间
timeToIdleSeconds //若5分钟内,该缓存未被调用,则也会失效
举例说明:timeToLiveSeconds =3600 timeToIdleSeconds =300
以上配置代表缓存有效时间为3600秒(自缓存建立起一个小时有效 ),在有效的一个小时内,如果连续五分钟未访问缓存,则缓存失效,特别说明的是,就算缓存访问从未间断,到一个小时后,缓存也会失效
配置参考 https://blog.csdn.net/mlitsn/article/details/1909192
2.加入配置后,在DAO中使用注解
3.当调用该方法时,首次调用数据库后,再次调用该方法时将不在查询数据库,可以在application.properties配置文件中加入打印Hibernate sql的配置
spring.jpa.show-sql=true
会发现,只查询了一次,说明配置生效了
4.在新增和更新及删除时数据变了,不能还拿缓存的老数据吧 ,缓存怎么去更新呢?
需要CacheManager去管理缓存,在新增和更新及删除时,需要使用CacheManager去刷新缓存
CacheManager manager = CacheManager.getInstance();
manager.getCache("findByMethodName").flush();//findByMethodName为在ehcache中配置的缓存名