一、定義
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon)是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信。
二、功能
memcached是一套分佈式的快取系統,當初是Danga Interactive爲了LiveJournal所發展的,但被許多軟件(如MediaWiki)所使用。這是一套開放源代碼軟件,以BSD license授權協議發佈。
memcached缺乏認證以及安全管制,這代表應該將memcached服務器放置在防火牆後。
memcached是高性能的分佈式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
Memcached 的守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信。但是它並不提供冗餘(例如,複製其hashmap條目);當某個服務器S停止運行或崩潰了,所有存放在S上的鍵/值對都將丟失。
主要功能:
1) 服務器參數監控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新
2) 服務器性能監控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實時監控
3) 支持數據遍歷,方便對存儲內容進行監視
4) 支持條件查詢,篩選出滿足條件的KEY或VALUE
5) 數組、JSON等序列化字符反序列顯示
6) 兼容memcache協議的其他服務,如Tokyo Tyrant (遍歷功能除外)
7) 支持服務器連接池,多服務器管理切換方便簡潔
三、特徵
協議簡單
基於libevent的事件處理
內置內存存儲方式
memcached不互相通信的分佈式
協議
memcached的服務器客戶端通信並不使用複雜的XML等格式,而使用簡單的基於文本行的協議。
事件處理
libevent是個程序庫,它將Linux的epoll、BSD類操作系統的kqueue等事件處理功能封裝成統一的接口。即使對服務器的連接數增加,也能發揮O(1)的性能。memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等操作系統上發揮其高性能。關於事件處理這裏就不再詳細介紹,可以參考DanKegel的The C10K Problem。
存儲方式
爲了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由於數據僅存在於內存中,因此重啓memcached、重啓操作系統會導致全部數據消失。另外,內容容量達到指定值之後,就基於LRU(LeastRecently Used)算法自動刪除不使用的緩存。memcached本身是爲緩存而設計的服務器,因此並沒有過多考慮數據的永久性問題。
通信分佈式
memcached儘管是“分佈式”緩存服務器,但服務器端並沒有分佈式功能。各個memcached不會互相通信以共享信息。那麼,怎樣進行分佈式呢?這完全取決於客戶端的實現。本文也將介紹memcached的分佈式。
四、安裝所需配置
需要 libevent-2.0.21-stable.tar.gz ,memcached-1.4.34.tar.gz
環境CentOS 6.8
如果安裝環境是Redhat版本的安裝步驟是一樣的
要注意的是Redhat需要安裝CentOS的yum源
不會安裝的朋友可以看我的博文有安裝過程地址爲:http://blog.csdn.net/lkl_csdn/article/details/72979653
五、安裝
a) 首先安裝GCC yum -y install gcc ,用於make指令b) 解壓 libevent-2.0.21-stable.tar.gz
i. 進入解壓後文件目錄
ii. 執行 ./configure -prefix=/usr/libevent && make && make install
c) 解壓 memcached-1.4.34.tar.gz
i. 進入解壓後的文件目錄
ii. 執行 ./configure -with-libevent=/usr/libevent/ -prefix=/usr/memcached && make && make install
d) 啓動
i. /usr/memcached/bin/memcached -d -m 10m -p 11211 -u root (11211是默認端口)
ii. 啓動參數介紹如下:和上面的命令不對應
1. -d選項是啓動一個守護進程,
2. -m是分配給Memcache使用的內存數量,單位是MB,這裏是10MB,
3. -u是運行Memcache的用戶,這裏是root,
4. -l是監聽的服務器IP地址,如果有多個地址的話,這裏指定了服務器的IP地址192.168.0.200,
5. -p是設置Memcache監聽的端口,這裏設置了11211,最好是1024以上的端口,
6. -c選項是最大運行的併發連接數,默認是1024,這裏設置了256,按照服務器的負載量來設定,
7. -P是設置保存Memcache的pid文件,我這裏是保存在/tmp/memcached.pid,也可以啓動多個守護進程,不過端口不能重複。
六、常見的錯誤
a) 執行make 會出現找不多這個命令 是因爲沒有安裝gcc 可以在線安裝yum -y install gcc
七、連接Memcache端口
使用telnet連接(telnet不會安裝的可以看我上一篇博文有centos的telnet安裝地址是: http://blog.csdn.net/lkl_csdn/article/details/72977708)
命令是: telnet ip 端口號 如: telnet 192.168.1.9 11211