Ehcache配置持久化到硬盤


轉載自http://blog.java1234.com/blog/articles/277.html

Ehcache默認配置的話 為了提高效率,所以有一部分緩存是在內存中,然后達到配置的內存對象總量,則才根據策略持久化到硬盤中,這里是有一個問題的,假如系統突然中斷運行 那內存中的那些緩存,直接被釋放掉了,不能持久化到硬盤;這種數據丟失,對於一般項目是不會有影響的,但是對於我們的爬蟲系統,我們是用來判斷重復Url的,所以數據不能丟失;

這時候我們就需要通過Ehcache配置,來實現緩存的持久化,不存內存中。

 

這里給下參考配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<? xml  version = "1.0"  encoding = "UTF-8" ?>
 
< 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 = "a"
       maxElementsInMemory = "1" 
       eternal = "true"
       overflowToDisk = "true" 
       maxElementsOnDisk = "0"
       diskPersistent = "true" />
 
</ ehcache >

 

運行前面的測試代碼,只要我們添加緩存元素 ,則直接寫入到硬盤中;

QQ鎴浘20170405105247.jpg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM