天天看點

ubuntu10.04安裝memcached

一.安裝

apt-get install memcached

二.運作

/usr/bin/memcached -d -m 128 -l 127.0.0.1 -p 11211 -u root

參數說明:

-d 以守護程式(daemon)方式運作 memcached;

-m 設定 memcached 可以使用的記憶體大小,機關為 M;

-l 設定監聽的 IP 位址,如果是本機的話,通常可以不設定此參數;

-p 設定監聽的端口,預設為 11211,是以也可以不設定此參數;

-u 指定使用者,如果目前為 root 的話,需要使用此參數指定使用者

其它參數可以用,man memcached 一下就可以看到了

三. 常用指令

1.連接配接:telnet 127.0.0.1 11211

2、寫入memcache

<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n

a) <command name> 可以是”set”, “add”, “replace”。

“set”表示按照相應的<key>存儲該資料,沒有的時候增加,有的覆寫。

“add”表示按照相應的<key>添加該資料,但是如果該<key>已經存在則會操作失敗。

“replace”表示按照相應的<key>替換資料,但是如果該<key>不存在則操作失敗

b) <key> 用戶端需要儲存資料的key。

c) <flags> 是一個16位的無符号的整數(以十進制的方式表示)。

該标志将和需要存儲的資料一起存儲,并在用戶端get資料時傳回。

客戶可以将此标志用做特殊用途,此标志對伺服器來說是不透明的。

d) <exptime> 過期的時間。

若為0表示存儲的資料永遠不過時(但可被伺服器算法:LRU 等替換)。

如果非0(unix時間或者距離此時的秒數),當過期後,伺服器可以保證使用者得不到該資料(以伺服器時間為标準)。

e) <bytes> 需要存儲的位元組數(不包含最後的”\r\n”),當使用者希望存儲空資料時,<bytes>可以為0

f) 最後用戶端需要加上”\r\n”作為”指令頭”的結束标志。

<data block>\r\n

緊接着”指令頭”結束之後就要發送資料塊(即希望存儲的資料内容),最後加上”\r\n”作為此次通訊的結束。

結果響應:reply

當以上資料發送結束之後,伺服器将傳回一個應答。可能有如下的情況:

a) “STORED\r\n”:表示存儲成功

b) “NOT_STORED\r\n” : 表示存儲失敗,但是該失敗不是由于錯誤。

通常這是由于”add”或者”replace”指令本身的要求所引起的,或者該項在删除隊列之中。

如: set key 33 0 4\r\n

ffff\r\n

3、擷取/檢查KeyValue

get <key>*\r\n

a) <key>* 表示一個或者多個key(以空格分開)

b) “\r\n” 指令頭的結束

結果響應:reply

伺服器端将傳回0個或者多個的資料項。每個資料項都是由一個文本行和一個資料塊組成。當所有的資料項都接收完畢将收到”END\r\n”

每一項的資料結構:

VALUE <key> <flags> <bytes>\r\n

<data block>\r\n

a) <key> 希望得到存儲資料的key

b) <falg> 發送set指令時設定的标志項

c) <bytes> 發送資料塊的長度(不包含”\r\n”)

d) “\r\n” 文本行的結束标志

e) <data block> 希望接收的資料項。

f) “\r\n” 接收一個資料項的結束标志。

如果有些key出現在get指令行中但是沒有傳回相應的資料,這意味着伺服器中不存在這些項,這些項過時了,或者被删除了

如:get aa

VALUE aa 33 4

ffff

END

4、删除KeyValue:

delete <key> <time>\r\n

a) <key> 需要被删除資料的key

b) <time> 用戶端希望伺服器将該資料删除的時間(unix時間或者從現在開始的秒數)

c) “\r\n” 指令頭的結束

5、檢查Memcache伺服器狀态:

stats\r\n

在這裡可以看到memcache的擷取次數,目前連接配接數,寫入次數,已經命中率等;

pid : 程序id

uptime :總的運作時間,秒數

time : 目前時間

version : 版本号

……

curr_items : 目前緩存中的KeyValue數量

total_items : 曾經總共經過緩存的KeyValue數量

bytes : 所有的緩存使用的記憶體量

curr_connections 目前連接配接數

….

cmd_get : 總擷取次數

cmd_set : 總的寫入次數

get_hits : 總的命中次數

miss_hits : 擷取失敗次數

…..

bytes_read : 總共讀取的流量位元組數

bytes_written : 總的寫入流量位元組

limit_maxbytes : 最大允許使用的記憶體量,位元組

6、進階緩存細節檢視方法:

stats reset

清空統計資料

stats malloc

顯示記憶體配置設定資料

stats cachedump slab_id limit_num

顯示某個slab中的前limit_num個key清單,顯示格式如下

ITEM key_name [ value_length b; expire_time|access_time s]

其中,memcached 1.2.2及以前版本顯示的是 通路時間(timestamp)

1.2.4以上版本,包括1.2.4顯示 過期時間(timestamp)

如果是永不過期的key,expire_time會顯示為伺服器啟動的時間

stats cachedump 7 2

ITEM copy_test1 [250 b; 1207795754 s]

ITEM copy_test [248 b; 1207793649 s]

stats slabs

顯示各個slab的資訊,包括chunk的大小、數目、使用情況等

stats items

顯示各個slab中item的數目和最老item的年齡(最後一次通路距離現在的秒數)

stats detail [on|off|dump]

設定或者顯示詳細操作記錄

參數為on,打開詳細操作記錄

參數為off,關閉詳細操作記錄

參數為dump,顯示詳細操作記錄(每一個鍵值get、set、hit、del的次數)

7、清空所有鍵值

flush_all

注:flush并不會将items删除,隻是将所有的items标記為expired,是以這時memcache依舊占用所有記憶體。

8、退出

quit\r\n

參考:http://mwap.mtom.cn/Blog/post/2010/03/20/Memcache-e79a84e591bde4bba4e8a18ce794a8e6b395.aspx