成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大廠都在用的本地緩存Ehcache原來這么強!

存儲 存儲軟件
緩存管理器內可放置若干個cache,所有cache都實現了Ehcache接口,是實際使用的緩存實例,真正地存放數據。通過緩存管理器模式,即可實現在單應用中隔離多個緩存實例,各自獨立服務不同業務場景,緩存數據物理隔離,同時需要時又可組合共享。

[[382002]]

最為廣泛使用的純Java開發的輕量級本地緩存框架。

Ehcache架構圖

 

核心組件

  • cache manager

緩存管理器,可多實例

  • cache

緩存管理器內可放置若干個cache,所有cache都實現了Ehcache接口,是實際使用的緩存實例,真正地存放數據。通過緩存管理器模式,即可實現在單應用中隔離多個緩存實例,各自獨立服務不同業務場景,緩存數據物理隔離,同時需要時又可組合共享。

  • element

單條緩存數據的組成單位。

  • system of record(SOR)

實際緩存數據都是通過SOR讀寫的,可以是真正的業務邏輯、外部接口調用、存放真實數據的DB。

它的緩存介質涵蓋堆內存(heap)、堆外內存(BigMemory商用版本支持)和磁盤,各介質可獨立設置屬性和策略。

Ehcache最初是獨立的本地緩存框架,隨著發展,結合Terracotta服務陣列模型,可支持分布式緩存集群,主要有RMI、JGroups、JMS和Cache Server等傳播方式進行節點間通信,如架構圖左側部分。

數據流轉

  • Flush

緩存條目向低層次移動

  • Fault

從低層拷貝一個對象到高層。在獲取緩存的過程中,某層發現自己的該緩存數據已失效,就觸發Fault。

  • Eviction

把緩存項除去

  • Expiration

失效狀態

  • Pinning

強制緩存項保持在某層

數據流轉生命周期

 

L1:本地內存層,L2:Terracotta服務節點層

配置

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

雖然Ehcache支持磁盤持久化,但由于存在兩級緩存介質。

在一級內存中的緩存,如果沒有主動刷入磁盤,應用異常時依然會出現緩存數據丟失。

可按需將緩存刷到磁盤,將緩存刷到磁盤的操作cache.flush()。

對象的磁盤寫入,前提是要將對象序列化。

特性

Ehcache的多線程機制專門優化高并發場景

  • 簡單

小小的jar包,簡單配置開箱即用,單機場景更無需依賴其它組件

  • 多種緩存策略
  • 兩級緩存(內存&磁盤)
  • 相比一般本地緩存,有了磁盤,將可緩存更多數據
  • 監控
  • 具有緩存和緩存管理器的監聽接口,能更簡單方便的進行緩存實例的監控管理
  • 支持多緩存管理器實例,以及一個實例的多個緩存區域
  • 超時

Ehcache的超時設置是針對整個cache實例的策略,而沒有提供方便的細粒度單獨key的超時處理。過期失效的緩存數據無法被GC回收,時間越長緩存越多,內存占用越大,內存泄露概率越大

本文轉載自微信公眾號「JavaEdge」,可以通過以下二維碼關注。轉載本文請聯系JavaEdge公眾號。

 

 

責任編輯:武曉燕 來源: JavaEdge
相關推薦

2021-12-15 06:58:28

RedisEhCache緩存

2020-10-13 21:23:52

數據

2023-09-04 13:55:44

分支masterhotfix

2021-02-26 10:46:11

接口測試DiffUnix系統

2021-11-29 05:37:24

Windows Def操作系統微軟

2021-02-02 16:37:25

Redis分布式

2020-10-13 17:54:18

開發Kafka數據

2024-10-21 08:01:49

私服倉庫Maven

2022-03-15 08:22:31

Ehcachespring緩存

2024-08-12 11:42:21

2021-04-19 05:42:51

Mmap文件系統

2023-05-07 23:22:24

golang

2023-11-01 14:49:07

2020-09-24 06:44:54

HTTPS網站 HTTP

2015-11-13 10:38:53

Github系統內部開源軟件

2024-03-26 09:42:27

分片算法應用

2022-01-21 07:35:06

LRU緩存java

2023-02-14 06:40:33

React HookReact

2022-12-06 17:30:04

2013-06-13 08:57:47

Web開發Web工具Web訪談
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久这里只有精品首页 | 欧美日韩精品亚洲 | 91精品国产乱码久久久久久久 | 久久久久久精 | 日韩在线免费视频 | 久久久精品国产 | 国产91成人 | 欧美黑人国产人伦爽爽爽 | 久久成人综合 | 日韩视频在线观看一区二区 | 中文字幕一区二区三区乱码图片 | 色综合视频 | 精品免费 | 日韩av一区二区在线观看 | 婷婷综合五月天 | 中文字幕一区二区三区四区五区 | 亚洲一区二区中文字幕 | 欧美一区二区三区视频在线观看 | 国产在线观看一区二区 | 午夜电影合集 | 自拍偷拍精品 | 日韩高清一区二区 | 国产精品视频一二三区 | www.亚洲一区二区三区 | 四虎伊人 | 色综合久久久久 | 青青草社区 | 日日骚网 | 国产网站久久 | 国产精品一区二区三区在线 | 亚洲天堂av在线 | 免费看国产a | 精区3d动漫一品二品精区 | 日韩一区二区三区精品 | 国产精品欧美精品日韩精品 | 亚洲36d大奶网 | 国产农村妇女毛片精品久久麻豆 | 日韩综合在线 | 国产精品视频专区 | 国产精品免费视频一区 | 一区二区三区免费 |