memcached命令使用以及集羣

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

參數說明以下:

        • key:鍵值 key-value 結構中的 key,用於查找緩存值。

 

使用 gets 命令的輸出結果中,在最後一列的數字 1 表明了 key 爲 test 的 CAS 令牌。

      Memcached delete 命令

Memcached delete 命令用於刪除已存在的 key(鍵)。

語法:

delete 命令的基本語法格式以下:

delete key [noreply]

參數說明以下:

 

        • key:鍵值 key-value 結構中的 key,用於查找緩存值。
        • noreply(可選): 該參數告知服務器不須要返回數據

 

輸出

輸出信息說明:

 

      Memcached incr 與 decr 命令

 

Memcached incr 與 decr 命令用於對已存在的 key(鍵) 的數字值進行自增或自減操做。

 

incr 與 decr 命令操做的數據必須是十進制的32位無符號整數。

 

若是 key 不存在返回 NOT_FOUND,若是鍵的值不爲數字,則返回 CLIENT_ERROR,其餘錯誤返回 ERROR

 

 

incr 命令

 

語法:

 

incr 命令的基本語法格式以下:

 

incr key increment_value 

 

 

參數說明以下:

 

        • key:鍵值 key-value 結構中的 key,用於查找緩存值。
        • increment_value: 增長的數值。

 

輸出

輸出信息說明:

 

decr 命令

 

decr 命令的基本語法格式以下:

 

decr key decrement_value

 

參數說明以下:

 

 

        • key:鍵值 key-value 結構中的 key,用於查找緩存值。
        • decrement_value: 減小的數值。

 

在如下實例中,咱們使用 test 做爲 key,初始值爲 15,以後進行減 10 操做。

輸出

輸出信息說明:

        • NOT_FOUND:key 不存在。
        • CLIENT_ERROR:自增值不是對象。

         ERROR其餘錯誤,如語法錯誤等。

 

統計命令

 

 

Memcached stats 命令

 

Memcached stats 命令用於返回統計信息例如 PID(進程號)、版本號、鏈接數等。

 

語法:

 

stats 命令的基本語法格式以下:

 

stats

 

 

在如下實例中,咱們使用了 stats 命令來輸出 Memcached 服務信息。

 

stats

 

這裏顯示了不少狀態信息,下邊詳細解釋每一個狀態項:

 

 

  • pid: memcache服務器進程ID
  • uptime:服務器已運行秒數
  • time:服務器當前Unix時間戳
  • version:memcache版本
  • pointer_size:操做系統指針大小
  • rusage_user:進程累計用戶時間
  • rusage_system:進程累計系統時間
  • curr_connections:當前鏈接數量
  • total_connections:Memcached運行以來鏈接總數
  • connection_structures:Memcached分配的鏈接結構數量
  • cmd_get:get命令請求次數
  • cmd_set:set命令請求次數
  • cmd_flush:flush命令請求次數
  • get_hits:get命令命中次數
  • get_misses:get命令未命中次數
  • delete_misses:delete命令未命中次數
  • delete_hits:delete命令命中次數
  • incr_misses:incr命令未命中次數
  • incr_hits:incr命令命中次數
  • decr_misses:decr命令未命中次數
  • decr_hits:decr命令命中次數
  • cas_misses:cas命令未命中次數
  • cas_hits:cas命令命中次數
  • cas_badval:使用擦拭次數
  • auth_cmds:認證命令處理的次數
  • auth_errors:認證失敗數目
  • bytes_read:讀取總字節數
  • bytes_written:發送總字節數
  • limit_maxbytes:分配的內存總大小(字節)
  • accepting_conns:服務器是否達到過最大鏈接(0/1)
  • listen_disabled_num:失效的監聽數
  • threads:當前線程數
  • conn_yields:鏈接操做主動放棄數目
  • bytes:當前存儲佔用的字節數
  • curr_items:當前存儲的數據總數
  • total_items:啓動以來存儲的數據總數
  • evictions:LRU釋放的對象數目
  • reclaimed:已過時的數據條目來存儲新數據的數目

 

 

      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.

相關文章
相關標籤/搜索