Ehcache學習筆記——初識Ehcache

1. Ehcache 的主要特性和集羣方案java

EHCache EHCache 是一個純 java 的在進程中的緩存,是 Hibernate 中默認的 CacheProvider,最小的依賴性, 全面的文檔和測試,最新版本爲 2.0.1。 緩存應用在多個領域併發揮做用,ehcache 可應用於數據庫訪問緩存,安全認證緩存,web 緩存,soap 和 RESTFul 服務緩存,應用程序持久對象緩存以及分佈式緩存。web

(1)EhCache 的主要特性有:數據庫

a) 快速; b) 簡單; c)多種緩存策略;緩存

d)緩存數據有兩級:內存和磁盤,所以無需擔憂容量問題;安全

e)緩存數據會在虛擬機重啓的過程當中寫入磁盤;併發

f)能夠經過 RMI、可插入 API 等方式進行分佈式緩存; 分佈式

g) 具備緩存和緩存管理器的偵聽接口;ide

h) 支持多緩存管理器實例,以及一個實例的多個緩存區域;函數

i) 提供 Hibernate 的緩存實現;測試

(2)EhCache 從 1.7 版本後,支持五種集羣方案,分別是: a) Terracotta  b)RMI  c)JMS  d)JGroups  e)EhCache Server

2. Ehcache 的層次模型

Ehcache 的類層次模型主要爲三層,最上層的是 CacheManager,他是操做 Ehcache 的入 口。咱們能夠經過 CacheManager.getInstance()得到一個單子的 CacheManger,或者通 過 CacheManger 的構造函數建立 一個新的 CacheManger。 每一個 CacheManager 都管理着多個 Cache。而每一個 Cache 都以一種類 Hash 的方式,關聯着 多個 Element。 Element(鍵值對)則是咱們用於存放要緩存內容的地方。

3. Hibernate 的二級緩存策略

Hibernate 的二級緩存策略的通常過程以下 :

1)條件查詢的時候,老是發出一條 select * from table_name where .... (選擇全部字段)這樣的 SQL 語句查詢數據庫,一次得到全部的數據對象。

2) 把得到的全部數據對象根據 ID 放入到第二級緩存中。

3)當 Hibernate 根據 ID 訪問數據對象的時候,首先從 Session 一級緩存中查;查不到, 若是配置了二級緩存,那麼從二級緩存中查;查不到,再查詢數據庫,把結果按照 ID 放 入到緩存。

4 )刪除、更新、增長數據的時候,同時更新緩存。 Hibernate 的二級緩存策略,是針對於 ID 查詢的緩存策略,對於條件查詢則毫無做用。 爲此,Hi bernate 提供了針對條件查詢的 Query Cache。

4. Ehcache 的三種清空策略

(1) FIFO,first in first out,這個是你們最熟的,先進先出。

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

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

相關文章
相關標籤/搜索