memcache、memcached 學習、使用

Memcache是什麼?
Memcache是一個自由和開放源代碼、高性能、分配的內存對象緩存系統。用於加速動態web應用程序,減輕數據庫負載。它可以應對任意多個連接,使用非阻塞的網絡IO。由於它的工作機制是在內存中開闢一塊空間,然後建立一個Hash表,Memcached自管理這些Hash表。

Memcached又是什麼?

Memcache是該系統的項目名稱,Memcached是該系統的主程序文件(字母d可以理解爲daemon),以守護程序方式運行於一個或多個服務器中,隨時接受客戶端的連接操作,使用共享內存存取數據。


memcache做什麼用??
作爲緩存層,把一些數據存儲在內存中,以達到快速存取的目的。簡單的說就是將數據調用到內存中,然後從內存中讀取,從而大大提高讀取速度


特性和限制??
Memcached單進程在32位系統中最大使用內存爲2G,若在64位系統則沒有限制,這是由於32位系統限制單進程最多可使用2G內存。
memcached是鍵值一一對應,key默認最大不能超過128個字 節,value默認大小是1M


什麼樣的數據適合存在memcache中??

需要經常取,但是很少更新的數據,比如用戶信息,用戶只有在修改自己的信息時纔會更新數據庫,但是隻要登錄後訪問任何頁面都需要查詢用戶信息,這樣直接從memcache中取會更好

適用memcached的業務場景: 

1)如果網站包含了訪問量很大的動態網頁,因而數據庫的負載將會很高。由於大部分數據庫請求都是讀操作,那麼memcached可以顯著地減小數據庫負載。 
2)如果數據庫服務器的負載比較低但CPU使用率很高,這時可以緩存計算好的結果( computed objects )和渲染後的網頁模板(enderred templates)。 
3)利用memcached可以緩存 session數據 、臨時數據以減少對他們的數據庫寫操作。 
4)緩存一些很小但是被頻繁訪問的文件。 
5)緩存Web 'services'(非IBM宣揚的Web Services,譯者注)或RSS feeds的結果.。 


不適用memcached的業務場景: 

1)緩存對象的大小大於1MB   
Memcached本身就不是爲了處理龐大的多媒體(large media)和巨大的二進制塊(streaming huge blobs)而設計的。   
2)key的長度大於250字符   
3)虛擬主機不讓運行memcached服務   
      如果應用本身託管在低端的虛擬私有服務器上,像vmware, xen這類虛擬化技術並不適合運行memcached。Memcached需要接管和控制大塊的內存,如果memcached管理的內存被OS或 hypervisor交換出去,memcached的性能將大打折扣。 
4)應用運行在不安全的環境中   
Memcached爲提供任何安全策略,僅僅通過telnet就可以訪問到memcached。如果應用運行在共享的系統上,需要着重考慮安全問題。 
5)業務本身需要的是持久化數據或者說需要的應該是database


怎麼用???

memcache客戶端(php)
PHP有兩個版本的memcache客戶端擴展:php memcache和php memcached。
php memcache獨立用php實現,是老客戶端,從我們實踐中已發現有多個問題,而且功能少,屬性也可設置的少;
http://pecl.php.net/package/memcache
php memcached是基於原生的c的libmemcached的擴展,更加完善,建議替換爲php memcached。
http://pecl.php.net/package/memcached



一致性hash算法

分佈式緩存設計核心點:在設計分佈式cache系統的時候,我們需要讓key的分佈均衡,並且在增加cache server後,cache的遷移做到最少

相關資料 :

 http://blog.csdn.net/xinguan1267/article/details/7870308

https://blog.linuxeye.com/345.html


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