天天看點

Ubuntu 16.04安裝Memcached(單機)

Ubuntu 16.04安裝Memcached,不過不僅限與Ubuntu,可以用CentOS等去安裝,隻不過測試時使用的是Ubuntu機器。Windows下不建議使用,本機調試可以使用,線上環境除了Windows之外都可以使用。

說明:在Linux下建議使用源碼的形式安裝,至少整個安裝的檔案是清晰的,包括建立了什麼檔案等。在CentOS下要注意管理者權限運作。

準備條件:

Linux系統安裝memcached,首先要先安裝libevent庫。

自動安裝:

#(Ubuntu/Debian)
sudo apt-get install libevent libevent-deve
#(Redhat/Fedora/Centos)
yum install libevent libevent-deve       

源代碼安裝:

下載下傳最新版:http://libevent.org/

tar -zxvf libevent-2.1.8-stable.tar.gz 
cd libevent-2.1.8-stable/
sudo su
./configure  
make && make install      

安裝Memcached

#(Ubuntu/Debian)
sudo apt-get install memcached
#(Redhat/Fedora/Centos)
yum install memcached
#(FreeBSD)
portmaster databases/memcached      

從其官方網站(http://memcached.org)下載下傳Memcached最新版本。

#下載下傳最新版本
wget http://memcached.org/latest                    
#重命名
mv latest memcached.tar.gz
#解壓源碼
tar -zxvf memcached.tar.gz                    
#進入目錄
cd memcached-1.5.1/       
#切換root權限
sudo su                           
#配置
./configure --prefix=/usr/local/memcached/  
#編譯      
make && make test                                   
#安裝
make install                                         

如果上面報libevent-2.1.so.6的錯誤,參考:http://www.cnblogs.com/EasonJim/p/7580220.html

解除安裝(解除安裝前先kill全部程序:killall memcached):

源代碼安裝的:

sudo rm  -rf /usr/local/memcached      

自動安裝的:

#(Ubuntu)
sudo apt remove memcached
#(CentOS)
yum remove memcached      

Memcached運作

Memcached指令的運作:

#指令幫助
/usr/local/memcached/bin/memcached -h                                 

注意:如果使用自動安裝Memcached指令位于/usr/local/bin/memcached。

常用啟動選項:

  • -d:是啟動一個守護程序;
  • -m:是配置設定給Memcache使用的記憶體數量,機關是MB;
  • -u:是運作Memcache的使用者;
  • -l:是監聽的伺服器IP位址,可以有多個位址;
  • -p:是設定Memcache監聽的端口,最好是1024以上的端口;
  • -c:是最大運作的并發連接配接數,預設是1024;
  • -P:是設定儲存Memcache的pid檔案。

詳細啟動選項:

  • "A":是否運作用戶端使用shutdown指令。預設是不允許的。該選項将允許。用戶端的shutdown指令會将Memcached程序殺死。該選項會将settings.shutdown_command指派為false
  • "a":unix socket的權限位資訊(通路掩碼)。該選項的參數指派給settings.access
  • "U":大寫U。Memcached監聽的UDP端口值,預設端口為11211。該選項的參數指派給settings.udpport
  • "p":小寫p,Memcached監聽的tcp端口。預設端口為11211, 該選項的參數指派給settings.port
  • "s":小寫S。unix socket監聽的socket路徑。該選項的參數指派給settings.socketpath
  • "m":小寫m。Memcached能夠使用的最大記憶體值,預設是64MB。參數機關為MB。該參數指派給settings.maxbytes
  • "M":大寫M。預設情況下,當Memcached的記憶體使用完後,将進行LRU機制淘汰item以騰出空間。如果使用本選項那麼将關閉LRU功能。當然關閉LRU不代表不能存儲新資料。如果Memcached裡面存有過期失效的item,那麼就可以存儲新資料。否則将無法存儲。該選項将settings.evict_to_free指派為0。
  • "c":小寫c。最多允許多少個用戶端同時線上(這個值不等價于listen函數的第二個參數),該選項和後面的b選項有所不同。 預設值為1024個。該選項參數指派給settings.maxconns。
  • "h":顯示幫助資訊
  • "i":顯示memcached和libevent的版權資訊
  • "k":小寫k。将Memcached使用到的記憶體鎖定在記憶體中,不準OS把Memcached的記憶體移動到虛拟記憶體。因為當OS把Memcached的記憶體移動到虛拟記憶體可能會導緻頁錯誤,降低Memcached的響應時間
  • "v":小寫v。輸出Memcached運作時的一些資訊。-v -vv -vvv輸出的資訊依次增加。該選項會增加settings.verbose的值
  • "l":Memcached綁定的ip位址。如果不設定這個選項,那麼Memcached将使用INADDR_ANY。如果想指定多個IP位址,那麼該選項的參數可以由多個ip組成,ip之間用逗号分隔。也可以多次使用這個選項,此時端口應該尾随ip而不是單獨用-p選項指定。例如-l 127.0.0.1:8888,192.168.1.112:9999 或者 -l 127.0.0.1:8888 -l 192.168.1.112:9999該選項參數将指派給settings.inter
  • "d":以守護程序的形式運作Memcached
  • "r":将core檔案大小設定為不受限制
  • "R":worker線程連續為某個用戶端執行指令的最大指令數。該選項的參數指派給settings.reqs_per_event
  • "u":小寫u。當以root使用者啟動Memcached的時候需要指定Memcached的所屬使用者,其他使用者啟動Memcached不需要此選項
  • "P":大寫p。該選項的參數指明Memcached的pid儲存檔案。要和-d選項配合使用。注意運作的使用者是否有權限寫對應的檔案
  • "f":item的擴容因子。預設值為1.25。該選項的參數值可以是小數但必須大于1.0。該選項參數将指派給settings.factor
  • "n":設定最小的item能存儲多少位元組的資料。該選項參數指派給settings.chunk_size
  • "t":該選項的參數用于指定worker線程的個數,不建議超過64個。如果不設定該選項預設有4個線程。該參數會指派給settings.num_threads
  • "D":參數字元作為字首和ID的分隔符。使用了該選項才會自動收集狀态資訊。也可以在啟動Memcached後,用戶端使用stats detail on指令開啟,此時預設的分隔符為冒号":"。該選項參數會指派為settings.prefix_delimiter,并将settings.detail_enabled指派為1
  • "L":如果OS允許的話,那麼向OS申請更大的記憶體頁。OS的預設記憶體頁為4KB。大的記憶體頁可以有效降低頁表的大小,提高效率。此選項會使得Memcached預先先OS全部所需的申請記憶體。當然這些記憶體盡量是用大記憶體頁配置設定的
  • "C":大寫C。Memcached預設是使用CAS的,本選項是禁用CAS。本選項會将settings.use_cas指派為false
  • "b":listen函數的第二個參數。該選項的參數指派給settings.backlog。如果不設定該選項,那麼預設為1024。該選項和前面的c選項有所不同
  • "B":Memcached支援文本協定和二進制協定。該選項的參數用于指定使用的協定。預設情況下是根據用戶端的指令而自動判斷(也叫協商),參數隻能取auto、binary、ascii這三個字元串值。将參數将指派給settings.binding_protocol
  • "I":slab配置設定器中,每一個頁的大小。這個選項的參數是一個數值表示頁的大小。預設機關是B也可以在數值後面帶K或者M(大小寫都行),表示KB和MB。頁的大小小于1KB或者大于128MB都是不允許的。不推薦使用該選項。本選項參數會指派給settings.item_size_max
  • "S":大寫S。打開sasl安全協定。會将settings.sasl指派為true
  • "F":禁止用戶端的flush_all指令。預設是允許用戶端的flush_all指令的。該選項将settings.flush_enabled指派為false
  • "o":有下面幾個子選項可以設定。這個選項是用來優化的
    • maxconns_fast:   如果連接配接數超過了最大同時線上數(由-c選項指定),立即關閉新連接配接上的用戶端。該選項将settings.maxconns_fast指派為true
    • hashpower:   哈希表的長度是2^n。可以通過選項hashpower設定指數n的初始值。如果不設定将取預設值16。該選項必須有參數,參數取值範圍隻能為[12, 64]。本選項參數值指派給settings.hashpower_init
    • slab_reassign:   該選項沒有參數。用于調節不同類型的item所占的記憶體。不同類型是指大小不同。某一類item已經很少使用了,但仍占用着記憶體。可以通過開啟slab_reassign排程記憶體,減少這一類item的記憶體。如果使用了本選項,settings.slab_reassign指派為true
    • slab_automove:   依賴于slab_reassign。用于主動檢測是否需要進行記憶體排程。該選項的參數是可選的。參數的取值範圍隻能為0、1、2。參數2是不建議的。本選項參數指派給settings.slab_automove。如果本選項沒有參數,那麼settings.slab_automove指派為1
    • hash_algorithm:   用于指定雜湊演算法。該選項必須帶有參數。并且參數隻能是字元串jenkins或者murmur3
    • tail_repair_time:   用于檢測是否有item被已死線程所引用。一般不會出現這種情況,是以預設不開啟這種檢測。如果需要開啟這種檢測,那麼需要使用本選項。本選項需要一個參數,參數值必須不小于10。該參數指派給settings.tail_repair_time
    • lru_crawler:   本選項用于啟動LRU爬蟲線程。該選項不需要參數。本選項會導緻settings.lru_crawler指派為true
    • lru_crawler_sleep:  LRU爬蟲線程工作時的休眠間隔。本選項需要一個參數作為休眠時間,機關為微秒,取值範圍是[0, 1000000]。該參數指派給settings.lru_crawler_sleep
    • lru_crawler_tocrawl:   LRU爬蟲檢查每條LRU隊列中的多少個item。該選項帶有一個參數。參數會指派給settings.lru_crawler_tocrawl

1、作為前台程式運作:

/usr/local/memcached/bin/memcached -p 11211 -m 64m -vv      

這樣會顯示調試資訊。指令在前台啟動了Memcached,監聽TCP端口11211,最大記憶體使用量為64M。調試資訊的内容大部分是關于存儲的資訊。

2、作為背景服務程式運作:

/usr/local/memcached/bin/memcached -p 11211 -m 64m -d      

或者

/usr/local/memcached/bin/memcached -d -m 64M -u root -l 192.168.0.200 -p 11211 -c 256 -P /tmp/memcached.pid      

3、檢視啟動狀态

sudo netstat -ntpl | grep memcached      

測試

telnet 192.168.0.200 11211      

增加開機啟動

Ubuntu:

有兩種方式:1在rc.local中設定啟動,2使用update-rc.d增加開機啟動服務

下面是通過rc.local啟動的腳本:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#log
exec 2> /tmp/rc.local.log  # send stderr from rc.local to a log file  
exec 1>&2                  # send stdout to the same log file  
set -x                     # tell sh to display commands before execution 

#Memcached
/usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root

exit 0      

CentOS(沒實踐過):

有三種方式:

1在rc.local中設定啟動(位置在/etc/rc.d/rc.local)。

2使用chkconfig增加開機啟動服務。

3在scripts檔案夾下有個memcaed.sysv的檔案(注意:這個檔案不适合Ubuntu),拷貝到/etc/init.d下,然後使用chkconfig進行服務的添加即可。

離線版本:

連結: https://pan.baidu.com/s/1kU9DLI3 密碼: k6qg

參考:

http://www.linuxidc.com/Linux/2016-07/133423.htm

http://www.runoob.com/memcached/memcached-install.html

http://www.wuwenhui.cn/3714.html(CentOS解除安裝Memcached)

http://blog.csdn.net/ydwei918/article/details/46455471(CentOS解除安裝Memcached)

http://blog.csdn.net/qq_33862332/article/details/50907951(啟動參數參考)

繼續閱讀