使用ehcache將資料持久化到硬碟,重啟伺服器之後依然可用
阿新 • • 發佈:2018-12-17
在借鑑了網上很多例子之後在這裡整理一下, 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)回寫到磁碟。這樣就不用擔心程式是否非正常退出導致快取丟失了。