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