Memcached緩存技術原理及機制

Memcached基本概念

  • Memcached是danga的一個項目,最早是LiveJournal 服務的,最初爲了加速 LiveJournal 訪問速度而開發的,後來被很多大型的網站採用。
  • Memcached是一個高性能的分佈式的內存對象緩存系統,目前全世界不少人使用這個緩存項目來構建自己大負載的網站,來分擔數據庫的壓力,通過在內存裏維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,然後從內存中讀取,從而大大提高讀取速度。(注: 摘自百度全科)

一句話,memcached是一種緩存技術,可以把數據存放到內存中,從而通過內存訪問提速,memcached技術的主要目的就是提速;在memcached中維護了一張大的hash表,該表在內存中,表的結構式key-value。

查詢數據的三種方法

  1. 直接查詢數據庫(慢)
  2. 使用真靜態(快)
  3. 直接操作內存(極快)

Memcached 簡要原理

  • 使用memcached技術,先訪問內存表,如果在memcached中沒有存放查詢結果,訪問數據庫,然後把查詢的結果放入到memcached;如果查詢的數據已經存在內存中,就直接訪問內存。
    這裏寫圖片描述
  • memached的key一般是字符串,且唯一;value可以存放字符串、數值、數組、對象、布爾、二進制數據、null

memached機制深入瞭解
①基於c/s架構 ,協議簡單

  • c/s架構,此時memcached爲服務器端,我們可以使用如PHP,c/c++等程序連接memcached服務器
  • memcached的服務器客戶端通信並不使用XML等格式,而使用簡單的基於文本行的協議。因此,通過telnet也能在memcached上保存數據、取得數據

②基於libevent的事件處理

  • libevent是一套跨平臺的事件處理接口的封裝,能夠兼容包括這些操作系統:Windows/Linux/BSD/Solaris等操作系統的的事件處理。
  • Memcached 使用libevent來進行網絡併發連接的處理,能夠保持在很大併發情況下,仍舊能夠保持快速的響應能力。

③內置內存存儲方式

  • 爲了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由於數據僅存在於內存中,因此重啓memcached、重啓操作系統會導致全部數據消失。另外,內容容量達到指定值之後,就基於近期最少使用算法LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached本身是爲緩存而設計的服務器,因此並沒有過多考慮數據的永久性問題。

④基於客戶端的分佈式

  • memcached儘管是“分佈式”緩存服務器,但服務器端並沒有分佈式功能。各個memcached不會互相通信以共享信息。那麼,怎樣進行分佈式呢?這完全取決於客戶端的實現
    這裏寫圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章