Memcached 是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。它透過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。 Memcached基於一個儲存鍵/值對的hashmap。其守護程式(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並透過memcached協定與守護程式通訊。
Memcached 是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。它透過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。我們收集了《布爾教育燕十八Memcached影片教學》,希望能夠幫助大家更好的學習Memcached分散式叢集。
影片播放位址:http://www.php.cn/course/314.html
1、memcached的基本設定
1)啟動Memcache的伺服器端
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached. pid
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的記憶體數量,單位是MB,我這裡是10MB,
-u是執行Memcache的用戶,我這裡是root,
-l是監聽的伺服器IP位址,如果有多個位址的話,我這裡指定了伺服器的IP位址192.168.0.200,
-p是設定Memcache監聽的端口,我這裡設定了12000,最好是1024以上的端口,
-c選項是最大運行的並發連接數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定,
- P是設定保存Memcache的pid文件,我這裡是保存在/tmp/memcached.pid,
2)如果要結束Memcache進程,執行:
# kill `cat /tmp/ memcached.pid`
雜湊演算法將任意長度的二進位值映射為固定長度的較小二進位值,這個小的二進位值稱為雜湊值。哈希值是一段資料唯一且極為緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該
段落的一個字母,隨後的哈希都會產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的。
2、一致性Hash演算法的目的有兩點:一是節點變動後其他節點受影響盡可能小;二是節點變動後資料重新分配盡可能均衡 。
3、為什麼要執行 memcached ?
如果網站的高流量很大且大多數的存取會造成資料庫高負荷的狀況下,使用 memcached 能夠減輕資料庫的壓力。
4、適用memcached的業務場景?
1)如果網站包含了訪問量很大的動態網頁,因而資料庫的負載將會很高。由於大部分資料庫請求都是讀取操作,那麼memcached可以顯著地減少資料庫負載。
2)如果資料庫伺服器的負載比較低但CPU使用率很高,這時可以快取計算好的結果( computed objects )和渲染後的網頁模板(enderred templates)。
3)利用memcached可以快取session資料、臨時資料以減少對他們的資料庫寫入操作。
4)快取一些很小但是被頻繁存取的檔案。
5)緩存Web 'services'(非IBM宣揚的Web Services,譯者註)或RSS feeds的結果.。
5、不適用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
6、能夠遍歷memcached中所有的item嗎?
不能,這個操作的速度相對緩慢且阻塞其他的操作(這裡的緩慢時相比memcached其他的命令)。 memcached所有非調試(non-debug)命令,例如add, set, get, fulsh等無論
memcached中存儲了多少數據,它們的執行都只消耗常數時間。任何遍歷所有item的命令執行所消耗的時間,將隨著memcached中資料量的增加而增加。當其他指令因為等待(遍歷所
有item的命令執行完畢)而不能被執行,因而阻塞將發生。
以上是布爾教育燕十八Memcached影片資料分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!