Memcached完全自學手冊

2021-09-02 16:48:38 字數 2817 閱讀 9422

介紹:

memcached 是乙個高效能的分布式記憶體物件快取系統,用於動態web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動**的速度。memcached基於乙個儲存鍵/值對的hashmap。其守護程序(daemon )是用c寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護程序通訊。

功能:

memcached是一套分布式的快取系統,與redis相似,當初是danga interactive為了livejournal所發展的,但被許多軟體(如mediawiki)所使用。這是一套開放源**軟體,以bsd license授權協議發布。

memcached缺乏認證以及安全管制,這代表應該將memcached伺服器放置在防火牆後。

memcached的api使用32位元的迴圈冗餘校驗(crc-32)計算鍵值後,將資料分散在不同的機器上。當**滿了以後,接下來新增的資料會以lru機制替換掉。由於memcached通常只是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的系統時(像是後端的資料庫)需要額外的程式碼更新memcached內的資料。

memcached 是以livejournal 旗下danga interactive 公司的brad fitzpatric 為首開發的一款軟體。已成為mixi、hatena、facebook、vox、livejournal等眾多服務中提高web應用擴充套件性的重要因素。許多web應用都將資料儲存到rdbms中,應用伺服器從中讀取資料並在瀏覽器中顯示。但隨著資料量的增大、訪問的集中,就會出現rdbms的負擔加重、資料庫響應惡化、**顯示延遲等重大影響。

這時就該memcached大顯身手了。memcached是高效能的分布式記憶體快取伺服器。一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態web應用的速度、提高可擴充套件性。

memcached 的守護程序(daemon )是用c寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護程序通訊。但是它並不提供冗餘(例如,複製其hashmap條目);當某個伺服器s停止執行或崩潰了,所有存放在s上的鍵/值對都將丟失。

memcached由danga interactive開發,其最新版本發布於2023年,作者為anatoly vorobey和brad fitzpatrick。用於提公升livejournal . com訪問速度的。lj每秒動態頁面訪問量幾千次,使用者700萬。memcached將資料庫負載大幅度降低,更好的分配資源,更快速訪問。

特徵:

memcached作為高速執行的分布式快取伺服器,具有以下的特點:

· 協議簡單

· 基於libevent的事件處理

· 內建記憶體儲存方式

· memcached不互相通訊的分布式

協議

memcached的伺服器客戶端通訊並不使用複雜的xml等格式,而使用簡單的基於文字行的協議。

因此,通過telnet也能在memcached上儲存資料、取得資料。下面是例子。

$ telnet localhost 11211

trying 127.0.0.1

connected to localhost.localdomain (127.0.0.1).

escape character is '^]'.

set foo 0 0 3 (儲存命令)

bar (資料)

stored (結果)

get foo (取得命令)

value foo 0 3 (資料)

bar (資料)

事件處理

libevent是個程式庫,它將linux的epoll、bsd類作業系統的kqueue等事件處理功能封裝成統一的介面。即使對伺服器的連線數增加,也能發揮o(1)的效能。memcached使用這個libevent庫,因此能在linux、bsd、solaris等作業系統上發揮其高效能。關於事件處理這裡就不再詳細介紹,可以參考dan kegel的the c10k problem。

儲存方式

為了提高效能,memcached中儲存的資料都儲存在memcached內建的記憶體儲存空間中。由於資料僅存在於記憶體中,因此重啟memcached、重啟作業系統會導致全部資料消失。另外,內容容量達到指定值之後,就基於lru(least recently used)演算法自動刪除不使用的快取。memcached本身是為快取而設計的伺服器,因此並沒有過多考慮資料的永久性問題。

通訊分布式

memcached儘管是「分布式」快取伺服器,但伺服器端並沒有分布式功能。各個memcached不會互相通訊以共享資訊。那麼,怎樣進行分布式呢?這完全取決於客戶端的實現。本文也將介紹memcached的分布式。

功能:

乙個用php編寫的視覺化的memcached管理系統

memadmin是一款視覺化的memcached管理與監控工具,使用php開發,體積小,操作簡單。

主要功能:

伺服器引數監控:stats、settings、items、slabs、sizes實時重新整理

伺服器效能監控:get、delete、incr、decr、cas等常用操作命中率實時監控

支援資料遍歷,方便對儲存內容進行監視

支援條件查詢,篩選出滿足條件的key或value

陣列、json等序列化字元反序列顯示

相容memcache協議的其他服務,如tokyo tyrant (遍歷功能除外)

支援伺服器連線池,多伺服器管理切換方便簡潔

Memcached完全自學手冊

阿里雲大學課程 memcached完全自學手冊 課程介紹 memcached 是乙個高效能的分布式記憶體物件快取系統,用於動態web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態 資料庫驅動 的速度。memcached基於乙個儲存鍵 值對的hashmap。其...

Memcached完全自學手冊

介紹 memcached 是乙個高效能的分布式記憶體物件快取系統,用於動態web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態 資料庫驅動 的速度。memcached基於乙個儲存鍵 值對的hashmap。其守護程序 daemon 是用c寫的,但是客戶端可以用...

Memcached完全自學手冊

介紹 memcached 是乙個高效能的分布式記憶體物件快取系統,用於動態web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態 資料庫驅動 的速度。memcached基於乙個儲存鍵 值對的hashmap。其守護程序 daemon 是用c寫的,但是客戶端可以用...