1. 程式人生 > >SSM總結:一級快取、二級快取、分散式快取、頁面快取

SSM總結:一級快取、二級快取、分散式快取、頁面快取

快取介紹

當處理器讀取資料時,首先會從快取中查詢,如果快取有資料,那麼處理器直接使用,如果快取中中沒有,則從讀取速度相對慢的記憶體中讀取,同時把這個資料塊調入快取中,以便再次使用,這樣可以大大節省讀取記憶體的時間。在JAVA-EE中快取對於資料量大,高併發顯得特別重要。

  1. 使用者–後臺 採用OSCache快取
  2. 持久層一級快取
  3. 持久層二級快取
  4. 分散式快取

1、一級快取

一級快取發生在Session中,Session在Dao中,所以一級快取發生於某個Dao中,只能作用於某個Dao,屬於區域性快取,命中率低,所以與二級快取相比,優先使用二級快取。

當Hibernate根據ID訪問資料物件的時候,首先會從Session一級快取中查詢,如果查不到並且配置了二級快取,那麼會從二級快取中查詢,如果還查不到,就會查詢資料庫,把結果按照ID放入到快取中。

一級快取作用於Dao層(資料庫)

1、在Hiberante中也就是Session級別快取,與Session繫結,生命週期與Session也相同。

優點:快取在記憶體中,讀取速度較快 
         快取具體到某個事務,範圍比較小

缺點:記憶體容量有限,通過合理的方式檢索或者限制查詢大小。

2、二級快取

這裡寫圖片描述

二級快取是在SessionFactory中(也就是在資料庫連線池中所有dao共享,即所有Dao都可以使用)  應用:c3p0

快取介質:記憶體和硬碟,如果記憶體快取達到上限時,可指定硬碟快取,在Hibernate中就是CacheProvider(快取介面卡)

二級快取適用場景:

  1. 很少被修改的資料
  2. 對併發要求不高
  3. 不重要的資料

3、分散式快取(Memcache)

分頁式快取CARP(Caching Array Routing Protocol)技術,可以產生一種高效無接縫式的快取,使得讓多臺快取伺服器形同一臺,並且不會造成資料重複存放的情況。 同時還有層次快取,動態快取和計劃快取三種。可作用於Controller、Service、Dao等層,大部分用於Service層。

這裡寫圖片描述

5、頁面快取:OSCache

OSCache是一種頁面快取技術 
快取任何物件,你可以不受限制的快取部分jsp頁面或HTTP請求,任何java物件都可以快取。

快取介質:記憶體和硬碟。

OSCache快取域分application和session兩種 
application(對效能優化作用很明顯)和某個使用者某次操作某個網站session(使用者和web伺服器會話)級共享兩種。對共享的資源設定過期時間。即當伺服器執行時發現在作用域內還有物件,就以類似靜態頁面的形式(因為快取了要顯示的資訊)提供給客戶端,當過期了,就需要重查資源(如果是頁面裡的快取就需要資源能在jsp 裡提供)。如果沒有過期,但內容改變了,可以通過flush的方式清除老資源以便載入新的資源。

OSCached就相當於一個Map,存放key,value。

key:url,

value:頁面Html、jsp

在新巴巴運動網中我們採用頁面全域性快取,使用Filter實現,並配置到了web.xml中,配置在中文過濾器(過濾request、response,過濾url中的中文)之前,詳情:

 <!--Oscache全域性快取filter-->
    <filter>
        <filter-name>CacheFilter</filter-name>
        <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
        <init-param>
            <param-name>time</param-name>  //設定重新整理時間為2小時
            <param-value>7200</param-value>
        </init-param>
        <init-param>
            <param-name>scope</param-name>   //作用域:application
            <param-value>application</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CacheFilter</filter-name>//攔截規則:此url下的頁面都快取
        <url-pattern>/product/display/*</url-pattern>
    </filter-mapping>

附圖:

相關推薦

SSM總結一級快取二級快取分散式快取頁面快取

快取介紹 當處理器讀取資料時,首先會從快取中查詢,如果快取有資料,那麼處理器直接使用,如果快取中中沒有,則從讀取速度相對慢的記憶體中讀取,同時把這個資料塊調入快取中,以便再次使用,這樣可以大大節省讀取記憶體的時間。在JAVA-EE中快取對於資料量大,高併發顯得特別重要。

Hibernate總結--一級快取二級快取

在Hibernate中存在一級快取和二級快取,一級快取時Session 級別的快取,它是屬於事務範圍的快取,這一級別的快取由 hibernate 管理的。一級快取Hibernate預設會實現,當使用get或者load等方式查詢時會將結果存在Session中,在下一次查詢時。若是同一個Session,

mybatis基礎系列(四)——關聯查詢延遲載入一級快取二級快取

關本文是Mybatis基礎系列的第四篇文章,點選下面連結可以檢視前面的文章: mybatis基礎系列(三)——動態sql mybatis基礎系列(二)——基礎語法、別名、輸入對映、輸出對映 mybatis基礎系列(一)——mybatis入門 關聯查詢 在進行表設計時,往往需要在具體的業務基礎上分析表與表之間的

mybatis和hibernate的一級二級快取

MyBatis一級快取: hibernate一級快取: 基本差不多  HashMap本地快取,作用域為session,session級別的快取,通過get,update可以將物件放到一級快取中,當 Session flush 或 close&n

Hibernate的一級快取二級快取和查詢快取

Hibernate的Session提供了一級快取的功能,預設總是有效的,當應用程式儲存持久化實體、修改持久化實體時,Session並不會立即把這種改變提交到資料庫,而是快取在當前的Session中,除非顯示呼叫了Session的flush()方法或通過close()方法關閉Sessi

談一談Hibernate的一級快取二級快取和查詢快取

Hibernate的Session提供了一級快取的功能,預設總是有效的,當應用程式儲存持久化實體、修改持久化實體時,Session並不會立即把這種改變提交到資料庫,而是快取在當前的Session中,除非顯示呼叫了Session的flush()方法或通過close

hibernate快取一級快取二級快取理解

一、什麼是快取:   快取是指為了降低應用程式對物理資料來源訪問的頻次從而提高應用程式的執行效能的一種策略。 二、為什麼使用快取: 1.ORM框架訪問資料庫的效率直接影響應用程式的執行速度,提升和優化ORM框架的執行效率至關重要。 2.Hibernate的快取是提升和

物件持久化和一級快取二級快取

1.物件持久化和一級快取 物件的三種狀態(對於Hibernate來說,物件狀態分為三種) (1)暫時態 當物件剛建立和Session沒有發生任何關係時,程式執行完就立刻消失,稱為暫時態 (2)持久態 當執行如下程式碼時,物件變為持久態. Emp e = new

hibernate 一級快取一級快取快照區二級快取

一級快取:Session級別的快取.一級快取與session的生命週期一致.自帶的.不可解除安裝. 二級快取:SessionFactory級別的快取.不是自帶的.需要手動開啟。 向一級快取存入資料的時候,放入一級快取區和一級快取快照區,當更新了一級快取的資料的

說說自己對hibernate一級二級查詢快取的理解。

今天面試碰到答不上來。。馬上回家查了下,現在寫下對hibernate快取的理解以加深印象。 1、一級快取 可以簡單的理解為session快取,即同一個session中使用get、load、迭代,會優先重快取中取,如果沒有則查詢資料庫並存入快取,session關閉後快取清空

Hibernate與Mybatis的區別Hibernate一級快取二級快取之間的區別

Hibernate對資料庫提供了較為完整的封裝,不需要手寫SQL語句,自動生成、自動執行,持久層框架,開源的物件關係對映,對JDBC的進一步封裝。 Mybatis著力點在於JAVA物件與SQL之間的對映關係,需要編寫sql語句,半自動,需要注意的細節更多,但是

效能優化(一)Hibernate 利用快取一級二級查詢)提高系統性能

      在hibernate中我們最常用的有三類快取,分別為一級快取、二級快取和查詢快取,下面我們對這三個快取在專案中的使用以及優缺點分析一下。       快取它的作用在於提高效能系統性能,介於應用系統與資料庫之間而存在於記憶體或磁碟上的資料。       我們程式設

MyBatis 延遲載入,一級快取(sqlsession級別)二級快取(mapper級別)設定

什麼是延遲載入          resultMap中的association和collection標籤具有延遲載入的功能。         延遲載入的意思是說,在關聯查詢時,利用延遲載入,先載入主資訊。使用關聯資訊時再去載入關聯資訊。 設定延遲載入      

Mybatis一級二級快取

一級快取 首先做一個測試,建立一個mapper配置檔案和mapper介面,我這裡用了最簡單的查詢來演示。 <mapper namespace="cn.elinzhou.mybatisTest.mapper.UserMapper">

Hibernate快取一級快取二級快取

1.什麼是快取?  快取是介於物理資料來源與應用程式之間,是對資料庫中的資料複製一份臨時放在記憶體中的容器,其作用是為了減少應用程式對物理資料來源訪問的次數,從而提高了應用程式的執行效能。Hibernate在進行讀取資料的時候,根據快取機制在相應的快取中查詢,如果在快取中找到了需要的資料(我們把這稱做“快取

Hibernate之二 一級快取(session)二級快取(sessionFactory)

一、操作Session快取 (1)flush Session 按照快取中物件的屬性變化來同步更新資料庫 1)預設情況下 Session 在以下時間點重新整理快取: 顯式呼叫 Session 的 flush() 方法 當應用程式呼叫 Transaction

Mybatis一級快取二級快取詳講

  Mybatis 一級快取、二級快取 作者 : Stanley 羅昊 【轉載請註明出處和署名,謝謝!】 查詢快取 首先,我們先看一下這個標題“查詢快取”,那就說明跟增、刪、改是沒有任何關聯的,只有在查詢時,才會遇到快取,增刪改不涉及! 查詢快取目前Mybatis

MyBatis 一級快取二級快取全詳解(一)

目錄 MyBatis 一級快取、二級快取全詳解(一) 什麼是快取 什麼是MyBatis中的快取 MyBatis 中的一級快取 初探一級快取 探究一級快取是如何失效的

mybatis原始碼學習一級快取二級快取分析

[toc] 前文傳送門:[mybatis原始碼學習:從SqlSessionFactory到代理物件的生成](https://www.cnblogs.com/summerday152/p/12773121.html) # 零、一級快取和二級快取的流程 > 以這裡的查詢語句為例。 ## 一級快取總結 -

mybatis高階(3)_延遲載入_深度延遲_一級快取_二級快取

mybatis高階(3)_延遲載入_深度延遲_一級快取_二級快取 設定延遲載入需要在mybatis.xml中設定 注: 侵入式延遲載入為真時是延遲載入 侵入式延遲載入為假時是深度延遲載入 <!-- 延遲載入和深度延遲載入 --> <settings