memcached 命令操作詳解

WEB發表於2013-06-28

一.儲存命令

儲存命令的格式:

 <command name> <key> <flags> <exptime> <bytes>

<data block>

引數說明:

<command name> 操作命令:set/add/replace
<key> 快取的鍵值
<flags> 客戶機使用它儲存關於鍵值對的額外資訊
<exptime> 快取過期時間 單位為秒 0 表示永遠儲存
<bytes> 快取值的位元組數
<data block> 資料塊

1.新增值命令

(1) 無論如何都新增或更新的set 命令 (值不存在則新增 存在則更新)  set 設定後可以用get命令獲取值 也可以使用delete命令刪除該值

[root@zhz jiehun]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set test_key 0 0 3
100
STORED
get test_key
VALUE test_key 0 3
100
END
delete test_key
DELETED
get test_key
END

(2)只有資料不存在時新增值的add命令

[root@zhz jiehun]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
add zhang 0 0 1 //第一次新增  成功
q 
STORED
add zhang 0 0 1 //第二次新增 失敗
q
NOT_STORED

(3)只有資料存在時替換的replace命令

[root@zhz jiehun]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
replace zhang_t 0 0 2    //replace 不存在的元素 失敗
22
NOT_STORED
add zhang_t 0 0 2
12
STORED
get zhang_t
VALUE zhang_t 0 2
12
END
replace zhang_t 0 0 3 //replace 存在的值成功
200
STORED
get zhang_t //值被替換
VALUE zhang_t 0 3
200
END

2.刪除命令   delete

get zhang_t
VALUE zhang_t 0 3
200
END
delete zhang_t
DELETED
get zhang_t
END

二 讀取命令

1.get 命令 獲取一個鍵或多個鍵的值 多個鍵以空格分開

get zhang_t zhang
VALUE zhang 0 1
q
END
set zhang_t 0 0 3
100
STORED
get zhang_t zhang
VALUE zhang_t 0 3
100
VALUE zhang 0 1
q
END

2 .gets 命令比get返回的值多一個數字 用來判斷資料是否發生過改變

gets zhang_t zhang
VALUE zhang_t 0 4 185
1000
VALUE zhang 0 1 181
q
END
set zhang_t 0 29 4
1000
STORED
gets zhang_t zhang
VALUE zhang_t 0 4 186
1000
VALUE zhang 0 1 181
q
END

3. cas 的意思是 check and set 的意思,只有當最後一個引數鶴gets獲取的那個用來判斷資料發生改變的那個值相同時才會儲存成功,否則返回 exists


gets zhang
VALUE zhang 0 3 188
dff
END
cas zhang 0 0 3 189
kjf
EXISTS
cas zhang 0 0 3 188
kjf
STORED
gets zhang
VALUE zhang 0 3 189
kjf
END

 

4. 自曾(incr) 自減(decr)命令

set age 0 0 2
10
STORED
get age
VALUE age 0 2
10
END
incr age 2
12
incr age 2
14
get age
VALUE age 0 2
14
END
decr age 1
13
get age
VALUE age 0 2
13
END

 

三 狀態命令

1.stats 顯示memcachd狀態

stats
STAT pid 1532 //程式id
STAT uptime 348167 //服務執行秒數
STAT time 1372215144 //當前unix時間戳
STAT version 1.4.14 //伺服器版本
STAT libevent 2.0.10-stable 
STAT pointer_size 32 //作業系統字大小
STAT rusage_user 3.997392 //程式累計使用者時間
STAT rusage_system 2.258656 //程式累計系統時間
STAT curr_connections 5 //當前開啟連線數
STAT total_connections 265 //連結總數
STAT connection_structures 7 //伺服器分配的連結結構數
STAT reserved_fds 20 //
STAT cmd_get 1911 //執行get命令次數
STAT cmd_set 195  //執行set命令次數
STAT cmd_flush 3 //執行flush命令次數
STAT cmd_touch 0
STAT get_hits 1708 //get命中次數
STAT get_misses 203 //get未命中次數
STAT delete_misses 11 //delete 未命中次數
STAT delete_hits 14 //delete命中次數
STAT incr_misses 0  //incr 自增命令 未命中次數
STAT incr_hits 0    //incr 命中次數
STAT decr_misses 0  //decr  自減 未命中次數
STAT decr_hits 0    //decr 命中次數
STAT cas_misses 0   //cas 未命中次數
STAT cas_hits 2     //case  命中次數
STAT cas_badval 1   //使用擦拭次數
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 164108   //讀取位元組數
STAT bytes_written 1520916 //寫入位元組書
STAT limit_maxbytes 67108864 //分配的記憶體數
STAT accepting_conns 1 //目前接受的連線數
STAT listen_disabled_num 0
STAT threads 4 //執行緒數
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 262144
STAT hash_is_expanding 0
STAT expired_unfetched 4
STAT evicted_unfetched 0
STAT bytes 23995  //儲存位元組數
STAT curr_items 31 //item個數
STAT total_items 189 //item總數
STAT evictions 0 //為獲取空間刪除的item個數
STAT reclaimed 17
END

2.flush_all 清空所有專案

flush_all
OK

3.後續追加append和prepend前面插入命令

get age
VALUE age 0 2
13
END
append age 0 3
ERROR
append age 0 0 6
111111
STORED
get age
VALUE age 0 8
13111111
END
prepend age 0 0 6
111111
STORED
get age
VALUE age 0 14
11111113111111
END

 

該命令有一個可選的數字引數。它總是執行成功,伺服器會傳送 “OK\r\n” 迴應。它的效果是使已經存在的專案立即失效(預設),或在指定的時間後。此後執行取回命令,將不會有任何內容返回(除非重新儲存同樣的鍵名)。 flush_all 實際上沒有立即釋放專案所佔用的記憶體,而是在隨後陸續有新的專案被儲存時執行(這是由memcached的懶惰檢測和刪除機制決定的)。

flush_all 效果是它導致所有更新時間早於 flush_all 所設定時間的專案,在被執行取回命令時命令被忽略。

 

 memecached還有其他命令 ,這裡只是平時我們工作中經常用到的一些,以此文章記錄備用。

相關文章