緩存之EHCache(第一個記錄)

1、簡介

很是簡單,並且易用。java

    ehcache 是一個很是輕量級的緩存實現,並且從1.2 以後就支持了集羣,並且是hibernate 默認的緩存provider。ehcache 是一個純Java的進程內緩存框架,具備快速、精幹等特色,是Hibernate中默認的CacheProvider緩存

ehcache能夠直接使用。也能夠和Hibernate對象/關係框架結合使用。還能夠作Servlet緩存。框架

Cache 存儲方式 :內存或磁盤。分佈式

官方網站:http://ehcache.sourceforge.net/ide

主要特徵:網站

1. 快速.spa

2. 簡單..net

3. 多種緩存策略hibernate

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

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

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

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

8. 支持多緩存管理器實例,以及一個實例的多個緩存區域

9. 提供Hibernate的緩存實現

10. 等等

2、快速上手

一、  項目類庫中添加ehcache.jar;

二、  在類路徑下編寫ehcache.xml配置文件。

3、配置文件參數詳解

ehcache.xml是ehcache的配置文件,而且存放在應用的classpath中。下面是對該XML文件中的一些元素及其屬性的相關說明: 

<diskStore>元素:指定一個文件目錄,當EHCache把數據寫到硬盤上時,將把數據寫到這個文件目錄下。 下面的參數這樣解釋:   

         user.home – 用戶主目錄   

         user.dir      – 用戶當前工做目錄   

         java.io.tmpdir – 默認臨時文件路徑

<defaultCache>元素:設定緩存的默認數據過時策略。 

<cache>元素:設定具體的命名緩存的數據過時策略。

<cache>元素的屬性 

        name:緩存名稱。一般爲緩存對象的類名(非嚴格標準)。 

        maxElementsInMemory:設置基於內存的緩存可存放對象的最大數目。 

        maxElementsOnDisk:設置基於硬盤的緩存可存放對象的最大數目。  

        eternal:若是爲true,表示對象永遠不會過時,此時會忽略timeToIdleSeconds和timeToLiveSeconds屬性,默認爲false; 

        timeToIdleSeconds: 設定容許對象處於空閒狀態的最長時間,以秒爲單位。當對象自從最近一次被訪問後,若是處於空閒狀態的時間超過了timeToIdleSeconds屬性值,這個對象就會過時。當對象過時,EHCache將把它從緩存中清空。只有當eternal屬性爲false,該屬性纔有效。若是該屬性值爲0,則表示對象能夠無限期地處於空閒狀態。 

        timeToLiveSeconds:設定對象容許存在於緩存中的最長時間,以秒爲單位。當對象自從被存放到緩存中後,若是處於緩存中的時間超過了 timeToLiveSeconds屬性值,這個對象就會過時。當對象過時,EHCache將把它從緩存中清除。只有當eternal屬性爲false,該屬性纔有效。若是該屬性值爲0,則表示對象能夠無限期地存在於緩存中。timeToLiveSeconds必須大於timeToIdleSeconds屬性,纔有意義。 

        overflowToDisk:若是爲true,表示當基於內存的緩存中的對象數目達到了maxElementsInMemory界限後,會把益出的對象寫到基於硬盤的緩存中。注意:若是緩存的對象要寫入到硬盤中的話,則該對象必須實現了Serializable接口才行。

memoryStoreEvictionPolicy:緩存對象清除策略。有三種:

        1 FIFO ,first in first out ,這個是你們最熟的,先進先出,很少講了

        2 LFU , Less Frequently Used ,就是上面例子中使用的策略,直白一點就是講一直以來最少被使用的。如上面所講,緩存的元素有一個hit 屬性,hit 值最小的將會被清出緩存。

        2 LRU ,Least Recently Used ,最近最少使用的,緩存的元素有一個時間戳,當緩存容量滿了,而又須要騰出地方來緩存新的元素的時候,那麼現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。

相關文章
相關標籤/搜索