在借鉴了网上很多例子之后在这里整理一下, ehcache版本为2.6.9,
- 这里给下参考配置:有些注释我直接从网上复制的。。
-
<ehcache> <!-- 磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存 path:指定在硬盘上存储对象的路径 --> <diskStore path="C:\ehcache" /> <!-- defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理 maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象 eternal:代表对象是否永不过期 overflowToDisk:当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中 --> <defaultCache maxElementsInMemory="100" eternal="true" overflowToDisk="true"/> <!-- maxElementsInMemory设置成1,overflowToDisk设置成true,只要有一个缓存元素,就直接存到硬盘上去 eternal设置成true,代表对象永久有效 maxElementsOnDisk设置成0 表示硬盘中最大缓存对象数无限大 diskPersistent设置成true表示缓存虚拟机重启期数据 --> <cache name="f" maxElementsInMemory="1" eternal="true" overflowToDisk="true" maxElementsOnDisk="0" diskPersistent="true" /> <cache name="f-temp" maxElementsInMemory="1" eternal="false" timeToIdleSeconds="0" timeToLiveSeconds="120" maxElementsOnDisk="0" overflowToDisk="true" diskPersistent="true" /> </ehcache>
web.xml添加监听器
-
<listener> <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class> </listener>
使用cache.flush(),每次get、put之后调用cache.flush() ,这样ehcache 会将索引(xxx.index)回写到磁盘。这样就不用担心程序是否非正常退出导致缓存丢失了。