技術集錦

1.hibernate緩存、二級緩存是怎麼實現的,除了oscache還引用了哪些緩存,緩存的原理是怎樣的,如果自己去模擬二級緩存該怎麼寫,假如數據被不停地修改或更新,那怎樣保證緩存中的數據是最新的?

  

(1)一級緩存就是Session級別的緩存,一個Session做了一個查詢操作,它會把這個操作的結果放在一級緩存中,如果短時間內這個

session(一定要同一個session)又做了同一個操作,那麼hibernate直接從一級緩存中拿,而不會再去連數據庫,取數據;

(2)二級緩存就是SessionFactory級別的緩存,顧名思義,就是查詢的時候會把查詢結果緩存到二級緩存中,如果同一個sessionFactory

創建的某個session執行了相同的操作,hibernate就會從二級緩存中拿結果,而不會再去連接數據庫;

(3)Hibernate中提供了兩級Cache,第一級別的緩存是Session級別的緩存,它是屬於事務範圍的緩存。這一級別的緩存由hibernate管理

的,一般情況下無需進行干預;第二級別的緩存是SessionFactory級別的緩存,它是屬於進程範圍或羣集範圍的緩存。這一級別的緩

存可以進行配置和更改,並且可以動態加載和卸載。 Hibernate還爲查詢結果提供了一個查詢緩存,它依賴於第二級緩存;

OScache特點:

緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
永久緩存--緩存能隨意的寫入硬盤,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啓。
支持集羣--集羣緩存數據能被單個的進行參數配置,不需要修改代碼。
緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)
 

所謂緩存,就是將程序或系統經常要調用的對象存在內存中,以便其使用時可以快速調用,不必再去創建新的重複的實例。這樣做可以減少系統開銷,提高系統效率。

緩存主要可分爲二大類: 

一、通過文件緩存,顧名思義文件緩存是指把數據存儲在磁盤上,不管你是以XML格式,序列化文件DAT格式還是其它文件格式;  

二、內存緩存,也就是實現一個類中靜態Map,對這個Map進行常規的增刪查. 

 

使用緩存的原則就是:儘量用低開銷的計算代替高開銷的計算。比如直接從其他數據庫 查詢的開銷要遠高於內存中的計算返回,網絡請求要遠高於本地(同一vm中)請求。

 memcache:分佈式應用 內存對象緩存系統開發,佔用其他機子的內存。很多互聯網 ,負載均衡三臺(以三臺爲例)其他web服務器 可以共享一臺memcache的資源。傳遞的信息以鍵值對的形式存儲。傳遞的數據要實現序列化。

oscache:頁面級緩存(網上強調最多的東西),佔用本機的內存資源。可 以選擇緩存到硬盤,如存取到硬盤重啓服務也可重新獲得上次持久化的資源,而如果緩存到內存就不行。一般沒必要緩存到硬盤,因爲i/o操作也是比較耗資源,和從其他數據庫 取往往優勢很小。oscache存取數據的作用域分爲application和session兩種。

 ehcache:hibernate 緩存,dao緩存,安全性憑證緩存(acegi),web緩存,應用開發持久化和分佈式應用 緩存。

如何保證緩存和數據庫數據一致性:http://www.36dsj.com/archives/43950

RPC原理分析:http://blog.csdn.net/mindfloating/article/details/39474123

     

發佈了190 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章