深刻分佈式緩存 -- 學習總結

什麼是緩存

存儲在計算機上的一個原始數據複製集,以便於訪問。 --維基百科 mysql

緩存是系統快速響應中的一種關鍵技術,是一組被保存起來以備未來使用的東西,介於應用開發跟系統開發之間。
根據軟件系統中所處位置的不一樣,緩存大致能夠分爲三類:web

  • 客戶端緩存
  • 服務器緩存
  • 網絡中的緩存

根據規模和部署方式緩存也能夠分爲:算法

  • 單體緩存
  • 緩存集羣
  • 分佈式緩存

客戶端緩存

頁面緩存:sql

  • 頁面自身的緩存或者離線應用緩存,頁面自身對某些元素或所有元素進行緩存,或服務端將靜態頁面或動態頁面的元素進行緩存。
  • 頁面緩存是將以前渲染的頁面保存爲文件,當用戶再次訪問時能夠避開網絡鏈接,從而減小負載,提高性能和用戶體驗。

瀏覽器緩存:數據庫

  • 根據一套與服務器約定的規則進行工做:檢查肯定副本是否最新,一般只要一次會話。
  • 補充------

app緩存瀏覽器

網絡中的緩存

web代理緩存緩存

邊緣緩存服務器

服務端緩存

數據庫緩存網絡

  • 數據庫屬於IO密集型的應用,主要負責數據的管理及存儲。數據庫緩存是一類特殊的緩存,是數據庫自身的緩存機制。
  • 以mysql爲例,mysql中使用了查詢緩衝機制,將SELECT語句和查詢結果存放在緩衝區中,之後對於一樣的SELECT語句,講直接從緩存區中讀取結果,以節省查詢時間,提升了sql查詢的效率。

平臺級緩存app

  • 在系統開發中,適當的使用平臺級緩存每每能夠取得事半功倍的效果。
  • 在這裏指用來寫帶有緩存特性的應用框架,或者可用於緩存功能的專用庫。

應用級緩存

當平臺級緩存不能知足系統性能要求時,就要考慮使用應用級緩存了。應用級緩存,須要開發者經過代碼來實現緩存機制,這裏是nosql的勝場,不管是Redis仍是MongoDB,以及Memcached均可以做爲應用級存儲的重要技術。

緩存算法:在實現緩存應用的時候,須要瞭解緩存技術中的幾個術語。

  • 緩存命中:請求的數據在緩存中。
  • 沒有命中:cache miss,若是緩存中還有存儲空間,那麼沒有命中的對象會被儲存到緩存中來。
  • 存儲成本:當cache miss,系統會從數據庫或者其餘數據源取出數據,而後放入存儲,這個過程須要時間和空間,這就是緩存成本。
  • 緩存失效:當存儲在緩存中的數據須要更新時,就覺得着緩存中的這一數據失效了。
  • 替代策略:當緩存沒有命中時,而且緩存容量已經滿了,就須要在緩存中去除一條舊數據,而後加入一條新數據,替代的選擇就有替代策略決定。

    • Least-Recently-Used(LRU):最近被請求最少的對象
    • Least-Frequently-Used(LFU):訪問次數最少的對象
    • SIZE:佔用空間最大的對象

相關文章
相關標籤/搜索