一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Ehcache簡介_動力節點Java學院整理

Ehcache簡介_動力節點Java學院整理

2020-12-07 11:25chenjumin Java教程

這篇文章主要介紹了Ehcache簡介,使用Spring的AOP進行整合,可以靈活的對方法的返回結果對象進行緩存

使用Spring的AOP進行整合,可以靈活的對方法的返回結果對象進行緩存。

CachingFilter功能可以對HTTP響應的內容進行緩存。

1、主要特性

     1. 快速.
     2. 簡單.
     3. 多種緩存策略
     4. 緩存數據有兩級:內存和磁盤,因此無需擔心容量問題
     5. 緩存數據會在虛擬機重啟的過程中寫入磁盤
     6. 可以通過RMI、可插入API等方式進行分布式緩存
     7. 具有緩存和緩存管理器的偵聽接口
     8. 支持多緩存管理器實例,以及一個實例的多個緩存區域
     9. 提供Hibernate的緩存實現
     10. 等等

2、配置文件介紹(普通緩存) 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<ehcache>
  <!-- 指定一個文件目錄,當EHCache把數據寫到硬盤上時,將把數據寫到這個文件目錄下 -->
  <diskStore path="java.io.tmpdir"/>
 
  <!-- 設定緩存的默認數據過期策略 -->
  <defaultCache
      maxElementsInMemory="10000"
      eternal="false"
      overflowToDisk="true"
      timeToIdleSeconds="0"
      timeToLiveSeconds="0"
      diskPersistent="false"
      diskExpiryThreadIntervalSeconds="120"/>
   
  <!-- 
    設定具體的命名緩存的數據過期策略
 
    cache元素的屬性:
      name:緩存名稱
       
      maxElementsInMemory:內存中最大緩存對象數
       
      maxElementsOnDisk:硬盤中最大緩存對象數,若是0表示無窮大
       
      eternal:true表示對象永不過期,此時會忽略timeToIdleSeconds和timeToLiveSeconds屬性,默認為false
       
      overflowToDisk:true表示當內存緩存的對象數目達到了maxElementsInMemory界限后,會把溢出的對象寫到硬盤緩存中。注意:如果緩存的對象要寫入到硬盤中的話,則該對象必須實現了Serializable接口才行。
       
      diskSpoolBufferSizeMB:磁盤緩存區大小,默認為30MB。每個Cache都應該有自己的一個緩存區。
       
      diskPersistent:是否緩存虛擬機重啟期數據
       
      diskExpiryThreadIntervalSeconds:磁盤失效線程運行時間間隔,默認為120秒
 
      timeToIdleSeconds: 設定允許對象處于空閑狀態的最長時間,以秒為單位。當對象自從最近一次被訪問后,如果處于空閑狀態的時間超過了timeToIdleSeconds屬性值,這個對象就會過期,EHCache將把它從緩存中清空。只有當eternal屬性為false,該屬性才有效。如果該屬性值為0,則表示對象可以無限期地處于空閑狀態
       
      timeToLiveSeconds:設定對象允許存在于緩存中的最長時間,以秒為單位。當對象自從被存放到緩存中后,如果處于緩存中的時間超過了 timeToLiveSeconds屬性值,這個對象就會過期,EHCache將把它從緩存中清除。只有當eternal屬性為false,該屬性才有效。如果該屬性值為0,則表示對象可以無限期地存在于緩存中。timeToLiveSeconds必須大于timeToIdleSeconds屬性,才有意義
 
      memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理內存。可選策略有:LRU(最近最少使用,默認策略)、FIFO(先進先出)、LFU(最少訪問次數)。
  -->
  <cache name="CACHE1"
      maxElementsInMemory="1000"
      eternal="true"
      overflowToDisk="true"/> 
       
  <cache name="CACHE2"
    maxElementsInMemory="1000"
    eternal="false"
    timeToIdleSeconds="200"
    timeToLiveSeconds="4000"
    overflowToDisk="true"/>
</ehcache>

3、配置文件介紹(分布式緩存) 

 1)RMI集群模式

A、手工發現

需要指定節點發現模式peerDiscovery值為manual,rmiUrls設置為另一臺服務器的IP、端口和緩存名等信息。

?
1
2
3
4
5
<cacheManagerPeerProviderFactory
  class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  properties="peerDiscovery=manual,
  rmiUrls=//192.168.0.12:4567/bjpowernode_cache|//192.168.0.13:4567/bjpowernode_cache"
/>

B、自動發現

需要指定節點發現模式peerDiscovery值為automatic自動,同時組播地址可以指定D類IP地址空間,范圍從 224.0.1.0 到 238.255.255.255 中的任何一個地址。

?
1
2
3
4
5
<cacheManagerPeerProviderFactory
  class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
  multicastGroupPort=4446, timeToLive=32"
/>

需要在每個cache屬性中加入

?
1
2
3
4
5
6
7
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
<cache name="demoCache"
  maxElementsInMemory="10000"
  eternal="true"
  overflowToDisk="true">
  <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache>

4、通過編程方式使用EhCache

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//從classes目錄查找ehcache.xml配置文件
CacheManager cacheManager = CacheManager.getInstance();
 
//從classes目錄查找指定名稱的配置文件
//CacheManager cacheManager = CacheManager.create(getClass().getResource("/ehcache.xml"));
 
//根據配置文件獲得Cache實例
Cache cache = cacheManager.getCache("CACHE1");
 
//清空Cache中的所有元素
cache.removeAll();
 
//往Cache中添加元素
cache.put(new Element("s1", "11111"));
cache.put(new Element("s2", "22222"));
cache.put(new Element("s3", "33333"));
 
//從Cache中取得元素
Element e = cache.get("s3");
System.out.println(e.getValue());
 
//卸載緩存管理器
cacheManager.shutdown();

5、頁面緩存

在web.xml文件中配置過濾器。此處對test_tag.jsp頁面進行緩存。

?
1
2
3
4
5
6
7
8
<filter
  <filter-name>testPageCachingFilter</filter-name
  <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class
</filter>
<filter-mapping
  <filter-name>testPageCachingFilter</filter-name
  <url-pattern>/test_tag.jsp</url-pattern>
</filter-mapping>

在ehcache.xml文件中配置Cache節點。注意:cache的name屬性必需為SimplePageCachingFilter。

?
1
2
3
4
5
6
7
<cache name="SimplePageCachingFilter"
  maxElementsInMemory="10"
  overflowToDisk="true"
  eternal="false"
  timeToIdleSeconds="100"
  timeToLiveSeconds="100"
  memoryStoreEvictionPolicy="LFU" />

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色戒真做gif动图 | 1314酒色| 丝袜兔女郎被啪在线观看91 | 亚洲好色网 | 91国内精品久久久久怡红院 | 九九九九九热 | 亚洲 欧美 偷自乱 图片 | 韩国久播影院理论片不卡影院 | 国产欧美日韩在线不卡第一页 | 欧美腐剧mm在线观看 | 午夜人妻理论片天堂影院 | 无限在线观看免费入口 | nhdta系列媚药系列 | 亚洲日本免费 | 天海翼黄色三级 | 久久理论片迅播影院一级 | 国产欧美日韩一区二区三区在线 | 亚洲色域网 | 亚洲欧美国产在线 | 亚洲天堂男人 | 午夜小视频免费 | 恩爱夫妇交换小说 | 99在线免费观看视频 | 婷色| 久久免费看少妇高潮A片JA | 男人摸女人下面 | 亚洲精品国产专区91在线 | 日本嫩模 | 18日本xxxxxxⅹxx96 | 特黄特色大片免费影院 | 99er视频| 美女秘密网站 | 52av我爱avhaose01| 国产一区二区在线免费观看 | 91禁漫| 亚洲第五页 | 成年无限观看onlyfans | 国产毛片在线高清视频 | 丰腴尤物贵妇浪荡小说 | 成人啪啪漫画全文阅读 | 四虎成人国产精品视频 |