EhCache 是一個純Java的進程內緩存框架,具有快速、精干等特點,是Hibernate中默認的CacheProvider。
屬性解釋:
必須屬性:
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,用於在初始化緩存,以及自動設置。
緩存的創建,采用自動的方式
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");