memcached命令參數詳解:以上安裝配置後纔可以使用數據庫
指令格式:vim
<命令><鍵><標記><有效期><數據長度>緩存
<命令> - command name服務器
主要是三個儲存數據的三個命令, set, add, replaceapp
set 命令是保存一個叫作key的數據到服務器上分佈式
add 命令是添加一個數據到服務器,可是服務器必須保證這個key是不存在的,可以保證數據不會被覆蓋memcached
replace 命令是替換一個已經存在的數據,若是數據不存在,就是相似set功能性能
<鍵> - key網站
就是保存在服務器上惟一的一個表示符,必須是跟其餘的key不衝突,不然會覆蓋掉原來的數據,這個key是爲了可以準確的存取一個數據項目ui
<標記> - flag
標記是一個16位的無符號整形數據,用來設置服務器端跟客戶端一些交互的操做
<有效期> - expiration time
是數據在服務器上的有效期限,若是是0,則數據永遠有效,單位是秒,Memcache服務器端會把一個數據的有效期
設置爲當前Unix時間+設置的有效時間
<數據長度> - bytes
數據的長度,block data 塊數據的長度,通常在這個個長度結束之後下一行跟着block data數據內容,發送完數據之後,客戶端通常等待服務器端的返回。
數據保存成功
STORED
數據保存失敗,通常是由於服務器端這個數據key已經存在了
END
證實沒有不存在這個key,沒有任何數據,若是存在數據,則返回指定格式:
<數據塊>
返回的數據是以VALUE開始的,後面跟着key和flags,以及數據長度,第二行跟着數據塊
<鍵> -key
是發送過來指令的key內容
<標記> - flags
是調用set指令保存數據時候的flags標記
<數據長度> - bytes
是保存數據時候定位的長度
<數據塊> - data block
數據長度下一行就是提取的數據塊內容
[ 數據刪除指令]
數據刪除指令也是比較簡單的,使用delete指令,格式是:
delete <鍵><超時時間>
NOT_FOUND
這個key沒有在服務器上找到
若是要刪除全部服務器上的數據,可使用flush_all指令,格式:
flush_all
這個指令執行後,服務器上全部緩存的數據都被刪除,而且返回:
OK
注意:這個指令通常不要輕易使,除非你確實想把全部數據都幹掉,刪除完之後能夠沒法恢復的。
stats
服務器將返回每行按照 STAT開始的狀態信息,包括20行,20項左右的信息,包括守護進程的pid、版本、保存的項目數量、內存佔用、最大內存限制等等信息。
若是隻是想獲取部分項目的信息,能夠指定參數,格式:
stats <參數>
這個指令將只返回指定參數的項目狀態信息。
若是隻是想單獨瞭解當前版本信息,可使用version指令,格式:
version
將返回以 VERSION 開頭的版本信息
若是想結束當前鏈接,使用quit指令,格式:
quit
將斷開當前鏈接
Memcached 鏈接
咱們能夠經過 telnet 命令並指定主機ip和端口來鏈接 Memcached 服務。
語法
telnet HOST PORT
命令中的 HOST 和 PORT 爲運行 Memcached 服務的 IP 和 端口。
實例
如下實例演示瞭如何鏈接到 Memcached 服務並執行簡單的 set 和 get 命令。
本實例的 Memcached 服務運行的主機爲 127.0.0.1(本機) 、端口爲 11211。
telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Memcached set 命令
Memcached set 命令用於將 value(數據值) 存儲在指定的 key(鍵) 中。
若是set的key已經存在,該命令能夠更新該key所對應的原來的數據,也就是實現更新的做用。
語法:
set 命令的基本語法格式以下:
set key flags exptime bytes [noreply] value
參數說明以下:
若是數據設置成功,則輸出:
STORED
輸出信息說明
Memcached add 命令
Memcached add 命令用於將 value(數據值) 存儲在指定的 key(鍵) 中。
若是 add 的 key 已經存在,則不會更新數據(過時的 key 會更新),以前的值將仍然保持相同,而且您將得到響應 NOT_STORED。
語法:
add 命令的基本語法格式以下:
add key flags exptime bytes [noreply] value
參數說明以下:
輸出
若是數據添加成功,則輸出:
STORED
輸出信息說明:
Memcached replace 命令
Memcached replace 命令用於替換已存在的 key(鍵) 的 value(數據值)。
若是 key 不存在,則替換失敗,而且您將得到響應 NOT_STORED。
語法:
replace 命令的基本語法格式以下:
replace key flags exptime bytes [noreply] value
參數說明以下:
輸出
若是數據添加成功,則輸出:
STORED
輸出信息說明:
Memcached append 命令
Memcached append 命令用於向已存在 key(鍵) 的 value(數據值) 後面追加數據 。
語法:
append 命令的基本語法格式以下:
append key flags exptime bytes [noreply] value
參數說明以下:
輸出
若是數據添加成功,則輸出:
STORED
輸出信息說明:
Memcached prepend 命令
Memcached prepend 命令用於向已存在 key(鍵) 的 value(數據值) 前面追加數據 。
語法:
prepend 命令的基本語法格式以下:
prepend key flags exptime bytes [noreply] value
參數說明以下:
輸出
若是數據添加成功,則輸出:
STORED
輸出信息說明:
memcached get 命令
Memcached get 命令獲取存儲在 key(鍵) 中的 value(數據值) ,若是 key 不存在,則返回空。
語法:
get 命令的基本語法格式以下:
get key
多個 key 使用空格隔開,以下:
get key1 key2 key3
參數說明以下:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
Memcached gets 命令
Memcached gets 命令獲取帶有 CAS 令牌存 的 value(數據值) ,若是 key 不存在,則返回空。
語法:
gets 命令的基本語法格式以下:
gets key
多個 key 使用空格隔開,以下:
gets key1 key2 key3
參數說明以下:
在 使用 gets 命令的輸出結果中,在最後一列的數字 1 表明了 key 爲 test 的 CAS 令牌。
Memcached delete 命令
Memcached delete 命令用於刪除已存在的 key(鍵)。
語法:
delete 命令的基本語法格式以下:
delete key [noreply]
參數說明以下:
輸出
輸出信息說明:
Memcached incr 與 decr 命令
Memcached incr 與 decr 命令用於對已存在的 key(鍵) 的數字值進行自增或自減操做。
incr 與 decr 命令操做的數據必須是十進制的32位無符號整數。
若是 key 不存在返回 NOT_FOUND,若是鍵的值不爲數字,則返回 CLIENT_ERROR,其餘錯誤返回 ERROR。
incr 命令
語法:
incr 命令的基本語法格式以下:
incr key increment_value
參數說明以下:
輸出
輸出信息說明:
decr 命令
decr 命令的基本語法格式以下:
decr key decrement_value
參數說明以下:
在如下實例中,咱們使用 test 做爲 key,初始值爲 15,以後進行減 10 操做。
輸出
輸出信息說明:
ERROR其餘錯誤,如語法錯誤等。
統計命令
Memcached stats 命令
Memcached stats 命令用於返回統計信息例如 PID(進程號)、版本號、鏈接數等。
語法:
stats 命令的基本語法格式以下:
stats
在如下實例中,咱們使用了 stats 命令來輸出 Memcached 服務信息。
stats
這裏顯示了不少狀態信息,下邊詳細解釋每一個狀態項:
Memcached stats items 命令
Memcached stats items 命令用於顯示各個 slab 中 item 的數目和存儲時長(最後一次訪問距離如今的秒數)。
語法:
stats items 命令的基本語法格式以下:
stats items
Memcached stats slabs 命令
Memcached stats slabs 命令用於顯示各個slab的信息,包括chunk的大小、數目、使用狀況等。
語法:
stats slabs 命令的基本語法格式以下:
stats slabs
Memcached stats sizes 命令
Memcached stats sizes 命令用於顯示全部item的大小和個數。
該信息返回兩列,第一列是 item 的大小,第二列是 item 的個數。
語法:
stats sizes 命令的基本語法格式以下:
stats sizes
Memcached flush_all 命令
Memcached flush_all 命令用於用於清理緩存中的全部 key=>value(鍵=>值) 對。
該命令提供了一個可選參數 time,用於在制定的時間後執行清理緩存操做。
語法:
flush_all 命令的基本語法格式以下:
flush_all [time] [noreply]
Memcache羣集
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。
實驗:
一、安裝libevent軟件(四臺)
[root@localhost ~]# tar -zxvf libevent-2.0.22-stable.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/libevent-2.0.22-stabl
[root@localhost libevent-2.0.21-stable]# ./configure --prefix=/usr/
[root@localhost libevent-2.0.21-stable]# make && make install
二、安裝memcached軟件(Memcached服務器 2臺)
[root@localhost ~]# tar -zxvf memcached-1.4.31.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/memcached-1.4.31/
[root@localhost memcached-1.4.31]# ./configure --enable-memcache --with-libevent=/usr/
[root@localhost memcached-1.4.31]# make && make install
主緩存:
[root@localhost ~]# memcached -d -m 1024 -u root -l 192.168.1.201 -p 11211
備緩存:
[root@localhost ~]# memcached -d -m 1024 -u root -l 192.168.1.202 -p 11211
[root@localhost ~]# netstat -anpt | grep memcached
三、安裝magent 軟件(Magent 服務器 2臺)
[root@localhost ~]# mkdir /usr/magent
[root@localhost ~]# tar -zxvf magent-0.6.tar.gz -C /usr/magent/
[root@localhost ~]# cd /usr/magent/
[root@localhost magent]# vim ketama.h
添加(頭部添加):
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
[root@localhost magent]# ln -s /usr/lib64/libm.so /usr/lib64/libm.a
[root@localhost magent]# ln -s /usr/lib64/libevent-2.0.so.5 /usr/lib64/libevent.a
沒法make的時候須要安裝libevent-2.0.so.5
[root@localhost magent]# /sbin/ldconfig
[root@localhost magent]# make
[root@localhost magent]# cp magent /usr/bin/
主緩存和備緩存同樣的啓動命令(-l 是漂移IP 尚未搭建Keepalived服務 暫時不要啓動Magent服務)
四、安裝keepalived 軟件(Magent 服務器 2臺)
[root@localhost ~]# yum -y install kernel-devel openssl-devel popt-devel
[root@localhost ~]# tar -zxvf keepalived-1.3.9.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/ keepalived-1.3.9/
[root@localhost keepalived-1.3.9]# ./configure --prefix=/ && make && make install
[root@localhost keepalived-1.3.9]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@localhost keepalived-1.3.9]# chkconfig --add keepalived
[root@localhost keepalived-1.3.9]# chkconfig keepalived on
配置主緩存服務器
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
修改:
global_defs {
router_id LVS_DEVEL_R1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.10
}
}
[root@localhost ~]# magent -u root -n 51200 -l 192.168.1.10 -p 12000 -s 192.168.1.201:11211 -b 192.168.1.202:11211
[root@localhost ~]# magent -u root -n 51200 -l 192.168.1.10 -p 12000 -s 192.168.1.201:11211 -b 192.168.1.202:11211
-u:用戶
-n:最大鏈接數
-l:magent 對外監聽IP 地址
-p:magent 對外監聽端口
-s:magent 主緩存IP 地址和端口
-b:magent 備緩存IP 地址和端口
[root@localhost ~]# ps -elf | grep magent
[root@localhost ~]# service keepalived restart
[root@localhost ~]# ip add show dev eth0
驗證:
客戶端ping 192.168.1.10 查看VIP的變化狀況。
五、驗證:
1)用主緩存節點鏈接上主緩存的1200端口插入數據
[root@localhost ~]# telnet 192.168.1.10 12000
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set key 33 0 5
ggggg
STORED
quit
Connection closed by foreign host.
2)查看插入的數據
[root@localhost ~]# telnet 192.168.1.10 12000
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
get key
VALUE key 33 5
ggggg
END
quit
Connection closed by foreign host.
3)鏈接主緩存節點的11211端口進行查看
[root@localhost ~]# telnet 192.168.1.201 11211
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
get key
VALUE key 33 5
ggggg
END
quit
Connection closed by foreign host.