Ehcache 學習

所需jar :ehcache-2.10.2.jar(最新) slf4j-api.jar(依賴)
classpath :ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>  
    <diskStore path="D:/Ehcache" />  

    <!-- maxElementsInMemory 內存中存儲的對象的個數, 內存管理的緩存元素數量最大限值 -->
    <!-- overflowToDisk 對象在內存中達到最大個數的時候,是否寫入硬盤 -->
    <!-- eternal 表示cache中的對象是否過期,缺省爲過期(按照配置中的時間),如果改爲true,表示該對象永遠不過期。
              即cache中的元素將一直保存在內存中, 不會因爲時間超時而丟失,所以在這個值爲true的時候,
     timeToIdleSeconds和timeToLiveSeconds兩個屬性的值就不起作用了 -->
    <!--  如timeToIdleSeconds="3600" 設定元素在過期前空閒狀態的時間,只對非持久性緩存對象有效。即多長時間不訪問該緩存,
              那麼ehcache就會清除該緩存。默認值爲0,值爲0意味着元素可以閒置至無限長時間。 --> 
    <!--  如timeToLiveSeconds="100000" 設定元素從創建到過期的時間。對象存活多少秒過期. 
              默認值爲0,值爲0意味着元素可以存活至無限長時間。 意思是從cache中的某個元素從創建到消亡的時間,
              從創建開始計時,當超過這個時間,這個元素將被從cache中清除。 -->
    <defaultCache   
        maxElementsInMemory="500"   
        eternal="false"   
        timeToIdleSeconds="300"   
        timeToLiveSeconds="1200"   
        overflowToDisk="true" />  

    <cache   
        name="ehcache"   
        maxElementsInMemory="1"   
        eternal="false"   
        timeToLiveSeconds="36000"   
        timeToIdleSeconds="3600"   
        overflowToDisk="true"
        diskExpiryThreadIntervalSeconds="5"
         />   
</ehcache>  

編寫ehcache工具類


public class EhcacheUtil {
    private static final String path = "/ehcache.xml";  

    private URL url;  

    private CacheManager manager;  

    private static EhcacheUtil ehCache;  

    private EhcacheUtil(String path) {  
        url = getClass().getResource(path);  
        manager = CacheManager.create(url); 

    }  

    public static EhcacheUtil getInstance() {  
        if (ehCache== null) {  
            ehCache= new EhcacheUtil(path);  
        }  
        return ehCache;  
    }  

    public void put(String cacheName, String key, Object value) {  
        Cache cache = manager.getCache(cacheName);  
        Element element = new Element(key, value);  
        cache.put(element);  
    }  

    public Object get(String cacheName, String key) {  
        Cache cache = manager.getCache(cacheName);  
        Element element = cache.get(key);  
        return element == null ? null : element.getObjectValue();  
    }  

    public Cache get(String cacheName) {  
        return manager.getCache(cacheName);  
    }  

    public void remove(String cacheName, String key) {  
        Cache cache = manager.getCache(cacheName);  
        cache.remove(key);  
    }  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章