在telnet下操作memcache詳解(操作命令詳解)

來源:互聯網
上載者:User

在定位問題、測試等時候經常需要對memcache的資料進行一些操作,但是其本身沒有內建的用戶端,所以只能通過telnet來進行操作。

通過telnet串連memcache。
複製代碼 代碼如下:
telnet 127.0.0.1 11211

memcache寫入操作

telnet寫入memcache命令格式
複製代碼 代碼如下:
 <command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n

參數詳解:

1.<command name> 可以是”set”, “add”, “replace”。

set:<key>不存在時添加,<key>存在時覆蓋。
add:<key>不存在時添加,<key>存在時則會操作失敗。
replace:<key>不存在時添加失敗,<key>存在時替換資料

2.<key> 儲存資料的key

3.<flags> 是一個16位的無符號的整數(以十進位的方式表示)。

該標誌將和需要儲存的資料一起儲存,並在用戶端get資料時返回。
客戶可以將此標誌用做特殊用途,此標誌對伺服器來說是透明的。

4.<exptime> 到期的時間。

0表示儲存的資料永遠不過時(但可被伺服器演算法:LRU 等替換)。
非0(unix時間),當到期後,伺服器可以保證使用者得不到該資料(以伺服器時間為標準)。

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

6.最後用戶端需要加上”\r\n”作為”命令頭”的結束標誌。

7.<data block>\r\n

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


telnet響應命令

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

1.STORED\r\n:表示儲存成功

2.NOT_STORED\r\n: 表示儲存失敗,但是該失敗不是由於錯誤。
> 通常這是由於”add”或者”replace”命令本身的要求所引起的,或者該項在刪除隊列之中。

樣本
複製代碼 代碼如下:
set key 32 0 10\r\n
helloworld\r\n
STORED\r\n

擷取Key&Value

擷取命令格式
複製代碼 代碼如下:
get <key>*\r\n

參數詳解:
1.<key>*: 表示一個或者多個key(以空格分開)
2.\r\n:命令結束

響應結果

伺服器端將返回0個或者多個的資料項目。每個資料項目都是由一個文本行和一個資料區塊組成。當所有的資料項目都接收完畢將收到END\r\n每一項的資料結構:

複製代碼 代碼如下:
VALUE <key> <flags> <bytes>\r\n
<data block>\r\n

參數詳解:
1.<key> 希望得到儲存資料的key
2.<falg> 發送set命令時設定的標誌項
3.<bytes>發送資料區塊的長度(不包含”\r\n”)
4.\r\n 文本行的結束標誌
5.<data block> 希望接收的資料項目。
6.\r\n 接收一個資料項目的結束標誌。

PS:如果有些key出現在get命令列中但沒有返回相應的資料,這意味著伺服器中不存在改項,可能是逾時了,或者被刪除了.

樣本
複製代碼 代碼如下:
get key
VALUE key 32 10
helloworld
END

刪除KeyValue:
複製代碼 代碼如下:delete <key> <time>\r\n
參數詳解:
1.<key> 需要被刪除資料的key
2.<time> 用戶端希望伺服器將該資料刪除的時間(unix時間或者從現在開始的秒數)
3.\r\n命令頭的結束

檢查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 : 最大允許使用的記憶體量,位元組

清空統計資料:
複製代碼 代碼如下:
stats reset

清空所有索引值
複製代碼 代碼如下:
flush_all

註:flush並不會將items刪除,只是將所有的items標記為expired,因此這時memcache依舊佔用所有記憶體。

退出
複製代碼 代碼如下:
quit\r\n


其他命令

1.顯示各個slab的資訊,包括chunk的大小、數目、使用方式等
複製代碼 代碼如下:stats slabs

2.顯示各個slab中item的數目和最老item的年齡(最後一次訪問距離現在的秒數)
複製代碼 代碼如下:stats items

3.設定或者顯示詳細操作記錄
複製代碼 代碼如下:stats detail [on|off|dump]

參數為on,開啟詳細操作記錄
參數為off,關閉詳細操作記錄
參數為dump,顯示詳細操作記錄(每一個索引值get、set、hit、del的次數)

4.顯示某個slab中的前limit_num個key列表
複製代碼 代碼如下:stats cachedump slab_id limit_num
顯示格式如下:
複製代碼 代碼如下:ITEM <key_name> [ <value_length> b; <expire_time|access_time> s]

<key_name>:鍵名
<value_length>:值長度(單位位元組)
<expire_time|access_time>:memcached 1.2.2及以前版本顯示的是 訪問時間(timestamp)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.