1. 程式人生 > >memcached分散式快取和hibernate結合

memcached分散式快取和hibernate結合

先了解一下什麼是memcached

Memcached是由Danga Interactive開發的,高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升訪問速度。Memcached 的快取是一種分散式的,可以讓不同主機上的多個使用者同時訪問, 因此解決了共享記憶體只能單機應用的侷限,更不會出現使用資料庫做類似事情的時候,磁碟開銷和阻塞的發生。
memcached的使用
Memcached伺服器端的安裝 (此處將其作為系統服務安裝)
  下載檔案:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)
   1 解壓縮檔案到c:\memcached
   2 命令列輸入 'c:\memcached\memcached.exe -d install' 
   3 命令列輸入 'c:\memcached\memcached.exe -d start' ,該命令啟動 Memcached ,預設監聽埠為 11211
  通過 memcached.exe -h 可以檢視其幫助

問題

  如果沒有下載伺服器端(如果memcached的使用)開啟memcached服務的話,那麼將出現一系列的錯誤,最主要是報連線的問。所以大家在使用memcached的時候一定要安裝伺服器端。

memcached和Hibernate的結合

現在Hibernate實現了memcached的無縫連線,已經說過了,hibernate暴力的地方是他的快取,hibernate結合memcached也是相當方便,只需配置,啟動伺服器沒有錯誤算配置OK啦。去在網上看了一大堆關於hibernate和memcached結合的文章,文章內容基本上都是一致的,鬱悶死,參考價值就少了很多。本人公司正使用memcached作為Hibernate的二級快取,在這裡也整理一下相關的內容。

  hibernate的快取機制是其成為主流持久層霸主地位的重要組成部分,他的快取機制是很黃很暴力的。二級快取是SessionFactory級別的全域性快取,可以通過配置檔案的hibernate.cache.provider_class 進行指定。在上次的日誌上有提到相關的配置,在這裡我再次貼一次供需要的人瞭解。

hibernate.cfg.xml

程式碼 <?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"                                          "
http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd
">  <hibernate-configuration>  <session-factory name="default">   <property name="hibernate.show_sql">true</property>   <property name="hibernate.format_sql">true</property>   <property name="hibernate.hbm2ddl.auto">update</property>   <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> -->   <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>   <property name="hibernate.jdbc.fetch_size">50</property>   <property name="hibernate.jdbc.batch_size">0</property>   <property name="hibernate.default_schema">user</property>         <!-- hibernate-memcache配置-->      <!-- 開啟二級快取-->      <property name="hibernate.cache.use_second_level_cache">          true       </property>      <!-- 設定快取類-->      <property name="hibernate.cache.provider_class">com.googlecode.hibernate.memcached.MemcachedCacheProvider</property>      <!-- 設定memcache快取伺服器埠 -->      <property name="hibernate.memcached.servers">localhost:11211</property>      <!-- 設定二級快取的字首名稱 -->      <property name="hibernate.cache.region_prefix">quality.cache.ehcache</property>      <!-- 否使用結構化的方式快取物件  -->      <property name="hibernate.cache.use_structured_entries">true</property>      <!-- 是否快取查詢結果 -->      <property name="hibernate.cache.use_query_cache">true</property>    <mapping resource="com/weiruan/projs/mydc/pojos/Usert.hbm.xml"/>   <mapping resource="com/weiruan/projs/mydc/pojos/Developer.hbm.xml"/>  </session-factory>  </hibernate-configuration>

相關推薦

memcached分散式快取hibernate結合-- Hibernate+ehcache二級快取技術

Memcached是由Danga Interactive開發的,高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升訪問速度。Memcached 的快取是一種分散式的,可以讓不同主機上的多個使用者同時訪問, 因此解決了共享記憶體只能單機應用的侷限,更

memcached分散式快取hibernate結合

先了解一下什麼是memcached Memcached是由Danga Interactive開發的,高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升訪問速度。Memcached 的快取是一種分散式的,可以讓不同主機上的多個使用者同時訪問, 因此解決

基於memcached for java 實現通用分散式快取叢集分散式快取

前提:基於memcached client for java 的基礎進行的二次封裝,實現快取儲存的兩種模式:通用分散式快取和叢集分散式快取。以下是對於memcached client for Java 二次封裝的UML圖。 對於memcached的客戶端初始化在Ca

一級快取,二級快取分散式快取頁面快取

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

hibernate-memcached--在Hibernate中使用Memcached作為一個二級分散式快取

官方網址: http://code.google.com/p/hibernate-memcached/目前最新版本為1.0, 支援Hibernate3.3.下面是具體的使用方法:hibernate-memcached需要支援的類庫如下:配置方法如下:配置Hibernate使

深入理解Hibernate的一級快取快照

hibernate分為: 一級快取也就是 Session 級別的快取,它是屬於事務範圍的快取 二級快取也就是 SessionFactory 級別的快取,它是屬於程序範圍的快取 session的一級快取 使用hibernate進行查詢的時候,將查詢結果放置到session的一級快取中,在一級快

分散式快取Memcached, Redis, MongoDB區別

分散式快取學習之一:Memcached, Redis, MongoDB區別   Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列代理。   Memcached是一個自由開源的,高效能,分散式記憶體物件快取系統。   MongoDB是一個基

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

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

Hibernate 二級快取查詢快取

一級快取:     1,在session上面有一個一級快取;一級快取的生命週期和session相同,一級快取最大生命週期就是一個執行緒;在web環境下面,session的最大生命週期就是一次請求;     2,一級快取可以用來幹嘛? &nb

hibernate 二級快取事務級別詳講

一、概述 這章總的分兩大塊來講解   第一大塊,hibernate的事務管理。對於hibernate的事務管理來說,如果之前學過資料庫的事務管理,那麼在這裡就順風順水了。如果沒學過,第一次遇到,那也沒關係,我會詳細解釋其中的內容。   第二大塊,hibernate的二級快取機制。這個看起

mybatishibernate的一級、二級快取

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

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

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

用SpringAOP結合MemCached快取的設想

方案一: 給DAO的方法上加SpringAOP的Around通知,決定資料從資料庫獲得還是從快取獲得。 自定義一個@MemEntity,對此Dao所有按主鍵和唯一鍵查詢進行快取。 規則:查詢的方法名getByField 更新updateByField&

分散式快取學習之一:Memcached, Redis, MongoDB區別

Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列代理。   Memcached是一個自由開源的,高效能,分散式記憶體物件快取系統。   MongoDB是一個基於分散式檔案儲存的資料庫,文件型的非關係型資料庫,與上面兩者不同。 &nbs

ASP.NET結合Redis實現分散式快取

  最近一個專案ASP.NET+MySQL 有的網頁開啟初始化的查詢需要10秒甚至更久,使用者體驗極差,而且併發量變大的時候網站容易崩潰 後來想了兩種解決方案都不是太滿意 1、資料庫裡建一張快取表,後臺作業定時去更新這張表,每次網頁開啟就可以直接從快取表裡查詢 2、使用者第一次開啟網站將資

Hibernate之一級快取二級快取

1:Hibernate的一級快取:   1.1:使用一級快取的目的是為了減少對資料庫的訪問次數,從而提升hibernate的執行效率;(當執行一次查詢操作的時候,執行第二次查詢操作,先檢查快取中是否有資料,如果有資料就不查詢資料庫,直接從快取中獲取資料);    1.

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

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

Mybatishibernate的一級,二級快取問題

Mybatis .一級快取(sqlSession)     一級快取是SqlSession自帶的。SqlSession物件被建立,一級快取就存在了。     如果SqlSession物件關閉或呼叫清理方法,會導致快取失效。     快取底層實現就是通過HashMap實現的。

Memcached 分散式記憶體物件快取系統在Java Web專案收藏欄中的使用

Memcached工具類程式碼 import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; import java.util.ArrayList; import java.util.List; /

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

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