Java的進程內緩存框架:EhCache


EhCache 是一個純Java的進程內緩存框架,具有快速、精干等特點,是Hibernate中默認的CacheProvider。

 
Ehcache緩存的特點:
1. 快速.
2. 簡單.
3. 多種緩存策略
4. 緩存數據有兩級:內存和磁盤,因此無需擔心容量問題
5. 緩存數據會在虛擬機重啟的過程中寫入磁盤
6. 可以通過RMI、可插入API等方式進行分布式緩存
7. 具有緩存和緩存管理器的偵聽接口
8. 支持多緩存管理器實例,以及一個實例的多個緩存區域
9. 提供Hibernate的緩存實現
 
Ehcache緩存的使用(1) – 安裝ehcache
Ehcache 的特點,是一個純Java ,過程中(也可以理解成插入式)緩存實現,單獨安裝Ehcache ,需把ehcache-X.X.jar 和相關類庫方到classpath中。如項目已安裝了Hibernate ,則不需要做什么,直接可以使用Ehcache 。
 
Ehcache緩存的使用(2) - 生成CacheManager
使用CacheManager 創建並管理Cache
1.創建CacheManager有4種方式:
A:使用默認配置文件創建
Java代碼
1.CacheManager manager = CacheManager.create(); 
 
B:使用指定配置文件創建
Java代碼
1.CacheManager manager = CacheManager.create("src/config/ehcache.xml"); 
 
C:從classpath中找尋配置文件並創建
Java代碼
1.URL url = getClass().getResource("/anothername.xml"); 
2.CacheManager manager = CacheManager.create(url); 
 
D:通過輸入流創建
Java代碼
1.InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath()); 
2.try { 
3.manager = CacheManager.create(fis); 
4.} finally { 
5.fis.close(); 
6.} 
 
Ehcache緩存的使用(3) – 解讀Ehcache配置文件ehcache.xml
重要的參數
<diskStore path="D:/work2/renhewww/cache"/>
<cache name=" sampleCache1"
      maxElementsInMemory="1"
           maxElementsOnDisk="10000"
           eternal="false"
           overflowToDisk="true"
           diskSpoolBufferSizeMB="20"
           diskPersistent="true"
           timeToIdleSeconds="43200"
           timeToLiveSeconds="86400"
           memoryStoreEvictionPolicy="LFU"
        />
 

屬性解釋:

必須屬性:

        name:設置緩存的名稱,用於標志緩存,惟一

        maxElementsInMemory:在內存中最大的對象數量

        maxElementsOnDisk:在DiskStore中的最大對象數量,如為0,則沒有限制

        eternal:設置元素是否永久的,如果為永久,則timeout忽略

        overflowToDisk:是否當memory中的數量達到限制后,保存到Disk

可選的屬性:

        timeToIdleSeconds:設置元素過期前的空閑時間

        timeToLiveSeconds:設置元素過期前的活動時間

        diskPersistent:是否disk store在虛擬機啟動時持久化。默認為false

   diskExpiryThreadIntervalSeconds:運行disk終結線程的時間,默認為120秒

        memoryStoreEvictionPolicy:策略關於Eviction

緩存子元素:

    cacheEventListenerFactory:注冊相應的的緩存監聽類,用於處理緩存事件,如put,remove,update,和expire

    bootstrapCacheLoaderFactory:指定相應的BootstrapCacheLoader,用於在初始化緩存,以及自動設置。

 

Ehcache緩存的使用(4) – 創建Cache
通過CacheManager創建Cache
Cache cache = manager.getCache("sampleCache1");
 
Ehcache緩存的使用(5) – 利用cache存取數據
存儲數據
Element element = new Element("key1", "value1"); 
cache.put(new Element(element); 
獲取數據
Element element = cache.get("key1");
 
 

緩存的創建,采用自動的方式  

CacheManager singletonManager = CacheManager.create(); 

singletonManager.addCache("testCache"); 

Cache test = singletonManager.getCache("testCache");       

或者直接創建Cache    

CacheManager singletonManager = CacheManager.create(); 

Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2); 

manager.addCache(memoryOnlyCache); 

Cache test = singletonManager.getCache("testCache");       

 

刪除cache    

CacheManager singletonManager = CacheManager.create(); 

singletonManager.removeCache("sampleCache1");      

在使用ehcache后,需要關閉  

CacheManager.getInstance().shutdown()     

caches 的使用 

Cache cache = manager.getCache("sampleCache1");        

執行crud操作    

Cache cache = manager.getCache("sampleCache1"); 

Element element = new Element("key1", "value1"); 

cache.put(element);       

//update    

Cache cache = manager.getCache("sampleCache1"); 

cache.put(new Element("key1", "value1"); 

//This updates the entry for "key1" 

cache.put(new Element("key1", "value2");       

//get Serializable    

Cache cache = manager.getCache("sampleCache1"); 

Element element = cache.get("key1"); 

Serializable value = element.getValue();       

//get non serializable    

Cache cache = manager.getCache("sampleCache1"); 

Element element = cache.get("key1"); 

Object value = element.getObjectValue();       

//remove    

Cache cache = manager.getCache("sampleCache1"); 

Element element = new Element("key1", "value1"  cache.remove("key1");     

 


免責聲明!

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



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