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(啟動參數參考)