在定位問題、測試等時候經(jīng)常需要對memcache的數(shù)據(jù)進(jìn)行一些操作,但是其本身沒有自帶的客戶端,所以只能通過telnet來進(jìn)行操作。
通過telnet連接memcache。
復(fù)制代碼 代碼如下:
telnet 127.0.0.1 11211
memcache寫入操作
telnet寫入memcache命令格式
復(fù)制代碼 代碼如下:
command name> key> flags> exptime> bytes>\r\n data block>\r\n
參數(shù)詳解:
1.command name> 可以是”set”, “add”, “replace”。
set:key>不存在時添加,key>存在時覆蓋。
add:key>不存在時添加,key>存在時則會操作失敗。
replace:key>不存在時添加失敗,key>存在時替換數(shù)據(jù)
2.key> 保存數(shù)據(jù)的key
3.flags> 是一個16位的無符號的整數(shù)(以十進(jìn)制的方式表示)。
該標(biāo)志將和需要存儲的數(shù)據(jù)一起存儲,并在客戶端get數(shù)據(jù)時返回。
客戶可以將此標(biāo)志用做特殊用途,此標(biāo)志對服務(wù)器來說是透明的。
4.exptime> 過期的時間。
0表示存儲的數(shù)據(jù)永遠(yuǎn)不過時(但可被服務(wù)器算法:LRU 等替換)。
非0(unix時間),當(dāng)過期后,服務(wù)器可以保證用戶得不到該數(shù)據(jù)(以服務(wù)器時間為標(biāo)準(zhǔn))。
5.bytes> 需要存儲的字節(jié)數(shù)(不包含最后的”\r\n”),當(dāng)用戶希望存儲空數(shù)據(jù)時,可以為0
6.最后客戶端需要加上”\r\n”作為”命令頭”的結(jié)束標(biāo)志。
7.data block>\r\n
緊接著”命令頭”結(jié)束之后就要發(fā)送數(shù)據(jù)塊(即希望存儲的數(shù)據(jù)內(nèi)容),最后加上”\r\n”作為此次通訊的結(jié)束。
telnet響應(yīng)命令
當(dāng)以上數(shù)據(jù)發(fā)送結(jié)束之后,服務(wù)器將返回一個應(yīng)答??赡苡腥缦碌那闆r:
1.STORED\r\n:表示存儲成功
2.NOT_STORED\r\n: 表示存儲失敗,但是該失敗不是由于錯誤。
> 通常這是由于”add”或者”replace”命令本身的要求所引起的,或者該項(xiàng)在刪除隊(duì)列之中。
示例
復(fù)制代碼 代碼如下:
set key 32 0 10\r\n
helloworld\r\n
STORED\r\n
獲取KeyValue
獲取命令格式
復(fù)制代碼 代碼如下:
get key>*\r\n
參數(shù)詳解:
1.key>*: 表示一個或者多個key(以空格分開)
2.\r\n:命令結(jié)束
響應(yīng)結(jié)果
服務(wù)器端將返回0個或者多個的數(shù)據(jù)項(xiàng)。每個數(shù)據(jù)項(xiàng)都是由一個文本行和一個數(shù)據(jù)塊組成。當(dāng)所有的數(shù)據(jù)項(xiàng)都接收完畢將收到END\r\n每一項(xiàng)的數(shù)據(jù)結(jié)構(gòu):
復(fù)制代碼 代碼如下:
VALUE key> flags> bytes>\r\n
data block>\r\n
參數(shù)詳解:
1.key> 希望得到存儲數(shù)據(jù)的key
2.falg> 發(fā)送set命令時設(shè)置的標(biāo)志項(xiàng)
3.bytes>發(fā)送數(shù)據(jù)塊的長度(不包含”\r\n”)
4.\r\n 文本行的結(jié)束標(biāo)志
5.data block> 希望接收的數(shù)據(jù)項(xiàng)。
6.\r\n 接收一個數(shù)據(jù)項(xiàng)的結(jié)束標(biāo)志。
PS:如果有些key出現(xiàn)在get命令行中但沒有返回相應(yīng)的數(shù)據(jù),這意味著服務(wù)器中不存在改項(xiàng),可能是超時了,或者被刪除了.
示例
復(fù)制代碼 代碼如下:
get key
VALUE key 32 10
helloworld
END
刪除KeyValue:
復(fù)制代碼 代碼如下:
delete key> time>\r\n
參數(shù)詳解:
1.key> 需要被刪除數(shù)據(jù)的key
2.time> 客戶端希望服務(wù)器將該數(shù)據(jù)刪除的時間(unix時間或者從現(xiàn)在開始的秒數(shù))
3.\r\n命令頭的結(jié)束
檢查Memcache服務(wù)器狀態(tài)
復(fù)制代碼 代碼如下:
stats\r\n
在這里可以看到memcache的獲取次數(shù),當(dāng)前連接數(shù),寫入次數(shù),已經(jīng)命中率等;
復(fù)制代碼 代碼如下:
pid : 進(jìn)程id
uptime :總的運(yùn)行時間,秒數(shù)
time : 當(dāng)前時間
version : 版本號
……
curr_items : 當(dāng)前緩存中的KeyValue數(shù)量
total_items : 曾經(jīng)總共經(jīng)過緩存的KeyValue數(shù)量
bytes : 所有的緩存使用的內(nèi)存量
curr_connections 當(dāng)前連接數(shù)
….
cmd_get : 總獲取次數(shù)
cmd_set : 總的寫入次數(shù)
get_hits : 總的命中次數(shù)
miss_hits : 獲取失敗次數(shù)
…..
bytes_read : 總共讀取的流量字節(jié)數(shù)
bytes_written : 總的寫入流量字節(jié)
limit_maxbytes : 最大允許使用的內(nèi)存量,字節(jié)
清空統(tǒng)計(jì)數(shù)據(jù):
復(fù)制代碼 代碼如下:
stats reset
清空所有鍵值
復(fù)制代碼 代碼如下:
flush_all
注:flush并不會將items刪除,只是將所有的items標(biāo)記為expired,因此這時memcache依舊占用所有內(nèi)存。
退出
復(fù)制代碼 代碼如下:
quit\r\n
其他命令
1.顯示各個slab的信息,包括chunk的大小、數(shù)目、使用情況等
復(fù)制代碼 代碼如下:
stats slabs
2.顯示各個slab中item的數(shù)目和最老item的年齡(最后一次訪問距離現(xiàn)在的秒數(shù))
復(fù)制代碼 代碼如下:
stats items
3.設(shè)置或者顯示詳細(xì)操作記錄
復(fù)制代碼 代碼如下:
stats detail [on|off|dump]
參數(shù)為on,打開詳細(xì)操作記錄
參數(shù)為off,關(guān)閉詳細(xì)操作記錄
參數(shù)為dump,顯示詳細(xì)操作記錄(每一個鍵值get、set、hit、del的次數(shù))
4.顯示某個slab中的前l(fā)imit_num個key列表
復(fù)制代碼 代碼如下:
stats cachedump slab_id limit_num
顯示格式如下:
復(fù)制代碼 代碼如下:
ITEM key_name> [ value_length> b; expire_time|access_time> s]
key_name>:鍵名
value_length>:值長度(單位字節(jié))
expire_time|access_time>:memcached 1.2.2及以前版本顯示的是 訪問時間(timestamp)
您可能感興趣的文章:- Linux telnet命令的使用
- 淺析memcache啟動以及telnet命令詳解
- telnet 命令使用方法大全