緩存
1,緩存的定義與作用
2,緩存的使用范圍(命中率高、高訪問量)
3,緩存策略(命中率,最大元素,清空策略);
4,緩存介質(內存緩存,硬盤緩存,數據庫緩存)(本地緩存(ehcache,oscache)與遠程緩存(memcached));
5,osCache緩存特點:
<1>緩存任何對象,不受限制地緩存部分jsp頁面或http請求
<2>擁有全面的api
<3>永久緩存,緩存能隨意寫入硬盤,因此允許昂貴的創建數據來保存緩存,甚至能讓應用重啟
<4>支持集群,集群緩存數據能被單個地進行參數配置,不需要修改代碼
<5>緩存記錄過期,可以最大限度的控制緩存對象的過期,包括可插入式刷新策略,在默認性能不需要的時候.
6,oscache的使用,
<1>下載occache.jar,放在web-inf/lib下,配置文件oscache.properties放入web-inf/classes目錄下
<2>使用jsp標簽緩存部分頁面<%@taglib uri="oscache" prefix="os"%>有5個標簽,cache,usecached,flush,addgroup,addgroups.
7,使用過濾器緩存整個頁面
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
<init-param>
</init-param>
</filter>
8使用oscache api緩存java對象.
主要通過GeneralCacheAdministrator來建立、刷新和管理緩存,可以通過加載cache.properties屬性來創建一個緩存實例,最好使用單例模式來創建GeneralCacheAdministrator.
9,在ibatis中使用oscache
<cacheModel id="userCache" type="OSCACHE">
<flushInterval hours="24"/>
<flushOnExecute statement="updateUser"/>
<property name="size" value="1000"/>
</cacheMode>
10ehcache的使用
<1>下載ehcache.jar,並配置ehcache.xml文件,配置各種屬性.使用<defaultCache>表示
<2>屬性解釋:
<!--
配置自定義緩存:
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: 緩存對象清除策略。有三種:FIFO、LFU、LRU
-->
<3>如果使用更多的緩存策略,可以添加類似的<cache>元素,其屬性與<defaultCache>相同.
11,使用過濾器緩存web頁面,需要在web.xml中添加過濾器
12,使用ehcache api緩存java對象
CacheManager manager=CacheManager.create();//使用默認配置文件創建
CacheManager manager=CacheManager.create("src/config/ehcache.xml")//使用指定配置文件創建
Url url=getClass().getResource("/anothername.xml");
CacheManager manager=CacheManager.create(url);//從classpath中尋找配置文件並創建.
Inputstream fis=new FileInputStream(new File("src/config/ehcahce.xml").getAbsolutePath();
CacheManager manager=CacheManager.create(fis);//使用輸入流來創建.
加載一個echache.xml配置的緩存策略
Cache cache=manager.getCache("sampleCachel");
然后往cache加入元素
Element element=new Element("key1","value1");
cache.put(new Element(element));
從cache中取得元素
Element element=cache.get("key1");
結束卸載CacheManager:
manager.shutdown();