Memcached是一個高性能的分佈式對象緩存系統,主要用於動態Web應用,以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。Memcached解決了共享內存只能單擊應用的侷限,更不會出現使用數據庫作相似的事情時候致使磁盤開銷和阻塞的發生。數據庫
1.爲何須要Memcached緩存
高併發訪問數據庫容易形成死鎖安全
基於客戶端分佈式,多客戶端共享緩存服務器
Net+Memory>>IOsession
讀寫性能完美:1s能夠讀取1萬次,寫10萬次併發
超簡單集羣搭建Cluster分佈式
Open Source高併發
學習成本低,入門容易性能
豐富的成功案例學習
不足的是既沒有提供主從複製功能,也沒有提供容災等功能,全部的代碼基本都只是考慮性能最佳。
2.適用Memcached的業務場景
(1).若是網站包含了訪問量很大的動態網頁,那麼數據庫的負載將會很高。因爲大部分數據庫請求都是讀操做,所以Memcached能夠顯著地減少數據庫負載。
(2).若是數據庫服務器的負載比較低但cpu使用率很高,就能夠緩存計算好的結果(computed objects)和渲染後的網頁模板(enderred templates)。
(3).利用Memcached能夠緩存session數據、臨時數據,以減小對它們的數據庫寫操做。
(4).緩存一些很小但被頻繁訪問的文件。
3.不適用Memcached的業務場景
(1).緩存對象的大小大於1MB。
(2).key的長度大於250字符。
(3).虛擬主機不讓運行Memcached服務。
(4).應用運行在不安全的環境中。Memcached未提供任何安全策略,僅僅經過Telnet就能夠訪問到。若是應用運行在共享的系統上,須要着重考慮安全問題。
(5).業務自己須要的是持久化數據或者說是database。