Java的進程內緩存框架:EhCache

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

 

Ehcache緩存的特色: 緩存

1. 快速. 框架

2. 簡單. 分佈式

3. 多種緩存策略 ide

4. 緩存數據有兩級:內存和磁盤,所以無需擔憂容量問題 url

5. 緩存數據會在虛擬機重啓的過程當中寫入磁盤 spa

6. 能夠經過RMI、可插入API等方式進行分佈式緩存 線程

7. 具備緩存和緩存管理器的偵聽接口 xml

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");     

相關文章
相關標籤/搜索