Ehcache使用用例

wulin 14年前發布 | 2K 次閱讀

Ehcache使用用例(一)

Ehcache使用用例(一)

Singleton創建方式

Ehcache1.2版本之后,都可以使用singleton(工廠創建方法)去創建一個singletonCacheManager實例。

CacheManager.create();

String[] cacheNames = CacheManager.getInstance().getCacheNames();

使用默認配置創建CacheManager

CacheManager manager = new CacheManager();

String[] cacheNames = manager.getCacheNames();

使用配置文件創建指定的CacheManager

CacheManager manager1 = new CacheManager(“src/config/ehcache1.xml”);

CacheManager manager2 = new CacheManager(“src/config/ehcache2.xml”);

String[] cacheNamesForManager1 = manager1.getCacheNames();

String[] cacheNamesForManager2 = manager2.getCacheNames();

配置文件加載方式

·   CacheManager manager = new CacheManager();會在classpath路徑下找ehcache.xml配置文件。

·   CacheManager manager = new CacheManager(“src/config.ehcache.xml”); 也可以根據相對文件路徑來加載配置文件.

·   通過URL加載

URL url = getClass().getResource(“/anotherconfigurationname.xml”);

CacheManager manager = new CacheManager(url);

·   通過流加載

InputSream fis = new FileInputStream(new File(“src/config/ehcache.xml”).getAbsolutePath());

Try {

    CacheManager manager = new CacheManager(fis);

} finally {

    Fis.close();

}

編碼實現添加和緩存

Ehcache中不僅可以用配置文件來配置緩存,而在代碼中也可以實現同樣的功能。

CacheManager singletonManager = CacheManager.create();

Cache memoryOnlyCache = new Cache(“testCache”, 50000, false, false, 8, 2);

Cache test = singletonManager.getCache(“testCache”);

刪除只需要調用singletonManager.removeCache(“testCache”);

Shotdown CacheManager

在使用完Ehcache后,必須要shutdown緩存。Ehcache中有自己的關閉機制,不過最好在你的代碼中顯示調用CacheManager.getInstance().shutdown();

Ehcache使用實例(二)

Cache使用

l          得到一個Cache引用

獲得一個sampleCache1的引用,從官方下載ehcache.xml,在ehcache.xml中已經有配置好的緩存,大家直接使用就可以,或是做測試,如果說真正使用的時候,最后自己手動配置一個比較好。

Cache cache = manager.getCache(“sampleCache1”);

l          使用Cache

Put一個Elementcache

Cache cache = manager.getCache(“sampleCache1”);

Element element = new Element(“key1”,”value1”);

cache.put(element);

update一個element時,只要在構造element時將相同的key傳入,在調用cache.put(element),這是Ehcache會根據key到緩存中找到對應的element并做更新。

Cache cache = manager.getCache(“sampleCache1”)

Cache.put(new Element(“key1”, “value1”));

更新element

Cache.put(new Element(“key1”, “value2”));

根據key取得對應element的序列化value

Cache cache = manager.getCache(“sampleCache1”);

Element element = cache.get(“key1”);

Serializable value = element.getValue();

根據key取得對應element的非序列化value

Cache cache = manager.getcache(“samplecache1”);

Element element = cache.get(“key1”);

Ojbect value = element.getObjectValue();

cache中移除key對應的element

Cache cache = manager.getCache(“sampleCache”);

Element element = new Element(“key1”, “value1”);

Cache.reomve(“key1”);

l          磁盤持久化

SampleCache1的配置是支持磁盤持久化的。如果想要保證element即時的被輸出到磁盤,可以調用cache.flush();

Cache cache = manager.getcache(“samplecache1”);

Cache.flush();

l          Cache Sizes

獲得當前cache中的element數量。

Cache cache = manager.getCache(“sampleCache1”);

Int elementsInMemory = cache.getSize();

獲得當前MemoryStore中的element數量。

Cache cache = manager.getCache(“sampleCache1”);

long elementsInMemory = cache.getMemoryStoreSize();

獲得當前DiskStoreelement數量。

Cache cache = manager.getCache(“sampleCache1”);

long elementsInMemory = cache.getDiskStoreSize();

l          Cache Hits and Misses

所謂的hits就是緩存訪問次數,而misses就是緩存中每個element的丟失次數。這些參數對優化緩存配置有很大的幫助。

獲得緩存中請求的element被找到的次數。

Cache cache = manager.getCache(“sampleCache1”);

Int hits = cache.getHitCount();

獲得請求的elementMemoryStore中被找到的次數。

Cache cache = manager.getCache(“sampleCache1”);

Int hits = cache.getMemoryStoreHitCount();

獲得請求的elementDiskStore中被找到的次數。

Cache cache = manager.getCache(“sampleCache1”);

Int hits = cache.getDiskStoreHitCount();

獲得請求的elementMemoryStore中沒有被找到的次數。

Cache cache = manager.getCache(“sampleCache1”);

Int hits = cache.getMissCountNotFound();

獲得請求的elementMemoryStore中沒有被找到的次數。

Cache cache = manager.getCache(“sampleCache1”);

Int hits = cache.getMissCountNotFound();

獲得緩存中失效element沒有被找到的次數。

Cache cache = manager.getcache(“samplecache1”);

Int hits = cache.getMissCountExpired();

創建一個默認配置cache

manager.addCache(String cachename);這個方法可以說是Ehcache很靈活的體現,通常我們想要添加一個新的cacheCacheManager中時,應該調用manager.addCache(Cache cache);可以看到入參是一個Cache類型對象,而前面那段代碼,Ehcache會自動使用默認配置創建一個名字為輸出參數的cache供使用,是不是很方面呢。

使用自定義參數創建一個cache

Ehcache允許通過編碼的方式創建一個自定義Cache,也就是調用構造方法。

Public Cache(String name, int maxElementsInMemory, MemoryStoreEvictionPolicy memoryStoreEvictionPolicy, Boolean overflowToDisk, Boolean eternal, long timeToLiveSeconds, long timeToIdleSeconds, Boolean isdkPersistent, long diskExpiryThreadIntervalSeconds) {}

以上就是Cache的構造函數。

CacheManager manager = CacheManager.create();

Cache cache = new Cache(“test”, maxElements, MemoryStoreEvictionPolicy.LFU, true, false, 60, 30, false, 0);

Manager.addCache(testCache);

以上代碼是創建一個緩存添加到cachemanager中,緩存名字為test,內存驅逐策略是LFU,允許輸出到磁盤,element不是永久有效的,element最大存活時間是60秒,element最大閑置時間30秒,不會持久化到磁盤,失效element清理線程運行時間間隔是0秒。

 

 本文由用戶 wulin 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!