ehcache数据持久化问题
ehcache 和其他缓存类似,需要flush 或者shutdown 才会持久化到硬盘。
会生成.data 的数据文件和 .index 的索引文件,方便重启恢复。
方法1:
<!-- ehcache 磁盘缓存 监控,持久化恢复 --> <listener>
<listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
</listener>
方法2:
在每次set 时就执行一次 flush
net.sf.ehcache.Cache ehCache = (net.sf.ehcache.Cache) cache.getNativeCache(); ehCache.flush();
方法3:
maxElementsInMemory设置成1,overflowToDisk设置成true,只要有一个缓存元素,就直接存到硬盘上去
<!-- maxElementsInMemory设置成1,overflowToDisk设置成true,只要有一个缓存元素,就直接存到硬盘上去
eternal设置成true,代表对象永久有效
maxElementsOnDisk设置成0 表示硬盘中最大缓存对象数无限大
diskPersistent设置成true表示缓存虚拟机重启期数据
-->
<cache
name="a"
maxElementsInMemory="1"
eternal="true"
overflowToDisk="true"
maxElementsOnDisk="0"
diskPersistent="true"/>
其他:
persistence:表示Cache的持久化,它只有一个属性strategy,表示当前Cache对应的持久化策略。其可选值如下:
localRestartable:该策略只对企业版Ehcache有用。它可以在重启的时候将堆内存或者非堆内存里面的元素持久化到硬盘上,重启之后再从硬盘上恢复元素到内存中。
参考:
https://www.iteye.com/blog/elim-2113728
以上是 ehcache数据持久化问题 的全部内容, 来源链接: utcz.com/z/510478.html