Memcached集羣的使用

基礎知識

什麼是Memcached

Memcached簡介

Memcached:是一個免費開源的、高性能的、具有分佈式內存對象的緩存系統,它通過減輕數據庫負載加速動態Web應用;

這個實在沒什麼好說的了,畢竟大家學過redis,數據庫的數據是放到磁盤的,而不管是redis還是memcached都可以把它當做一個大大的內存條,從內存條裏面讀取數據肯定比從硬盤裏面讀取數據庫要快得多。

再來看下它的特性:

  • 本質上就是一個內存key-value緩存;

  • 協議簡單,使用的是基於文本行的協議;

  • 不支持數據的持久化,服務器關閉之後數據全部丟失;

  • Memcached簡潔而強大,便於快速開發,上手較爲容易;

  • 互不通信的Memcached之間具有分佈特徵 ;

  • 沒有安全機制。

這些特性其實就把memcached的有點缺全部說到了。

本質上是一個內存的key-value緩存這個沒什麼好說的,這是nosql數據庫的標準特點。

協議簡單,後面學了客戶端的時候會了解,Redis是RESP協議,在RESP裏面描述KEY的長度,KEY的值,VALUE的長度,VALUE的值,而在Memcached裏面。呵呵噠,協議簡單是簡單,至於麻不麻煩後面學客戶端同學們會有深刻的體會,在這先賣個關子。

其他的,這就不做解釋了,同學們一看就明白。

適合和不適合的場景

再來看下memcached的使用場景,什麼情況下適合用memcached什麼情況下又不適合呢?

memcached適合變化頻繁,查詢頻繁,重點是不是要入庫的場景,爲啥?它沒法持久化。

還有就是變化不頻繁,但查詢頻繁的數據,最後就是讀多寫少的場景,尤其是電商場景中用於頁面數據的緩存,這是memcached適合的場景。

pv值不高,不考慮使用,什麼叫pv? 就是page view頁面展示次數,如果一些頁面都沒什麼訪問量就不要考慮memcached了。

變化頻繁且需要入庫,這個就直接不要考慮memcached了,爲啥?它沒法持久化唄。

再就是過大的數據不適合放在memcached中,這個也好理解。

分佈式緩存產品比較

首先來看下線程模型,Redis是單進程單線程的模式,而memcached是單進程多線程,這肯定memcached性能比redis要好那麼一點,這樣的差距反應在QPS/TPS的比較中,不過這個差別也不是特別的大。

沒錯,這麼一比較memcached也並不是一無是處,但這也就是memcached唯一的可圈可點之處了。

其他的基本redis超過memcached一大截。

集羣比較

當然現在還講到安裝,更沒講到memcached集羣,不過同學們可以先來看下,首先回顧下redis集羣,不管是redis中的哨兵還是cluster集羣,服務與服務直接是可以有數據的同步的,master的節點數據會通過slaveof的配置參數進行同步,如下圖所示。

再來看下memcached,memcached肯定也是可以支持集羣的,但他的集羣僅僅體現再數據的分庫中,memcached內存有限制是吧?我用多個memcached來存不就可以了。memcached節點之間是不會進行任何通信的,更別說什麼master與slave機制了,他本身也不支持持久化,服務重啓數據就丟了,所以高可用什麼的想都不要想,他不支持,如下圖所示。

數據庫流行度排行

這個圖是2018年的最新數據,關係型數據庫就不說了,重點就來看下redis和memcached這兩個nosql所在得位置,redis還不錯。比較汗顏得就是memcached了。我記得2017年我就看過這數據庫他排24名,現在2019年了,依然不溫不火,排在24名,有點小尷尬!

Memcached安裝

準備工作

在linux根目錄創建soft文件夾(根據自己習慣)

mkdir /soft

在soft目錄裏面上傳課件裏面的兩文件

libevent-2.1.8-stable.tar.gz

memcached-1.5.12.tar.gz

安裝libevent

安裝Memcached應該先安裝好libevent依賴,在soft目錄裏面執行命令

tar -xzvf libevent-2.1.8-stable.tar.gz

進入libevent的目錄,開始安裝libevent

./configure -prefix=/soft/libevent

make

make install

通過上述命令,libevent已經安裝到/soft/libevent目錄了

安裝Memcached

在soft目錄解壓上傳的memcached

tar -zxvf memcached-1.5.12.tar.gz

注意:編譯的時候需要指定動態鏈接庫,需要linux把libevent/lib目錄加載進來,下面的步驟特別重要

vi /etc/ld.so.conf

在ld.so.conf目錄中增加libevent/lib所在目錄,wq保存退出

增加(請根據libevent實際安裝目錄設置)

/soft/libevent/lib

執行下面命令讓上面的修改生效

ldconfig

下面可以正式安裝memcached,需要指定libevent的安裝位置

./configure -prefix=/soft/memcached --with-libevent=/soft/libevent

make

make install

測試

進入memcached的安裝目錄下的bin目錄

執行:

./memcached -h

發現有如上界面說明memcached 已經安裝成功

memcached啓動

memcached -m 16 -p 11211 -d -c 1024 -u root

-d 選項是啓動一個守護進程,

-m 是分配給Memcache使用的內存數量,單位是MB,這裏是1024MB,默認是64MB

-u 是運行Memcache的用戶,這裏是root

-l 是監聽的服務器IP地址,默認應該是本機

-p 是設置Memcache監聽的端口,默認是11211,最好是1024以上的端口

-c 選項是最大運行的併發連接數,默認是1024,這裏設置了1024,按照你服務器的負載量來設定

-P 是設置保存Memcache的pid文件位置

-h 打印幫助信息

-v 輸出警告和錯誤信息

-vv 打印客戶端的請求和返回信息

ps -ef | grep memcached 查看

集羣啓動

memcached 可以安裝到多臺機器上,安裝方式與上面一樣。這裏就不分別安裝了,就在當前的節點上啓動多個memcached 實例。

memcached -m 16 -p 11212 -d -c 1024 -u root

memcached -m 16 -p 11213 -d -c 1024 -u root

通過上面兩條命令,實際又啓動了2個memcached實例,加上上面啓動的,總共啓動了3個memcached實例

ps -ef | grep memcached 查看

停止memcached

Kill -9 端口號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章