Memcached經常使用指令

博文大綱:
1、存儲經常使用的指令
1.set指令
2.add指令
3.replace指令
4.append指令
5.prepend指令
6.cas指令
2、經常使用的查找指令
1.get指令
2.gets指令
3.delete指令
4.incr指令
5.decr指令
6.stats指令
7.stats items指令
8.stats slabs指令
9.stats sizes指令
10.flush_all指令redis

1、存儲經常使用的指令

經常使用的存儲數據的指令有:vim

  • set 命令是保存一個叫作 key 的數據到服務器上;
  • add 命令是添加一個數據到服務器,可是服務器必須保證這個 key 是不存在的,可以保證數據不會被覆蓋;
  • replace 命令是替換一個已經存在的數據,若是數據不存在,就是相似 set 功能;

上述指令的語法格式都是同樣的,只是指令不同而已,語法以下:緩存

<命令> <鍵> <標記> <有效期> <數據長度>

各個參數含義以下:服務器

  • <命令>:就是add、set、replace等指令;
  • <鍵> - key:就是保存在服務器上惟一的一個標識符,不能夠與其餘的key衝突,不然會覆蓋掉原來的數據(使用set命令的話),這個key是爲了可以準確的存取一個數據項目;
  • <標記> - flag:標記的是一個16位的無符號整型數據,用來設置服務器跟客戶端一些交互的操做;
  • <有效期> -expiration time:是數據在服務器上的有效期限,若是是0,則數據永遠有效,單位是秒,Memcached服務端會把一個數據的有效期設置爲當前Unix時間+設置的有效時間;
  • <數據長度> - bytes:數據的長度,block data數據塊的長度,通常這這個長度結束後下一行跟着block data數據內容,發送完數據之後,客戶端通常等待服務器端的返回;

1.set指令

set指令用於將數據值(value)存儲在指定的鍵(key)中,若是設置的鍵本來存在值,則會把本來的值覆蓋掉!app

基本語法格式:ide

set key flags exptime bytes [noreply] value

參數說明:
• key:就是鍵的名稱;
• flags:能夠包括鍵值對的整型參數,能夠理解爲鍵的標記;
• exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠);
• bytes:在緩存中存儲的字節數;
• noreply(可選): 該參數告知服務器不須要返回數據;
• value:存儲的值(始終位於第二行);memcached

示例:fetch

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set lzj 0 0 8
jianjian
STORED

輸出信息:操作系統

  • STORED:保存成功;
  • ERROR:保存失敗;

2.add指令

add 指令用於將 value(數據值) 存儲在指定的 key(鍵) 中,若是 add 的 key 已經存在,則不會更新數據(過時的 key 會更新)。線程

基本語法格式:

add key flags exptime bytes [noreply] value

參數說明:
• key:就是鍵的名稱;
• flags:能夠包括鍵值對的整型參數,能夠理解爲鍵的標記;
• exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠);
• bytes:在緩存中存儲的字節數;
• noreply(可選): 該參數告知服務器不須要返回數據;
• value:存儲的值(始終位於第二行);

示例:

如下實例中咱們設置:
• key → key
• flag → 0
• exptime → 900 (以秒爲單位)
• bytes → 3 (數據存儲的字節數)
• value → lzj

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
add key 0 900 3
lzj
STORED

輸出信息解釋:

  • STORED:保存成功;
  • ERROR:保存失敗;

3.replace指令

replace指令用於替換已存在的 key(鍵) 的 value(數據值),若是 key 不存在,則替換失敗!

語法以下:

replace key flags exptime bytes [noreply] value

參數說明:
• key:就是鍵的名稱;
• flags:能夠包括鍵值對的整型參數,能夠理解爲鍵的標記;
• exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠);
• bytes:在緩存中存儲的字節數;
• noreply(可選): 該參數告知服務器不須要返回數據;
• value:存儲的值(始終位於第二行);

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
add abc 0 900 3
123
STORED
replace abc 0 900 3
234
STORED

輸出信息解釋:

  • STORED:保存成功;
  • ERROR:保存失敗;

4.append指令

append指令用於向已存在 key(鍵) 的 value(數據值) 後面追加數據 !

語法以下:

append key flags exptime bytes [noreply] value

參數說明:
• key:就是鍵的名稱;
• flags:能夠包括鍵值對的整型參數,能夠理解爲鍵的標記;
• exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠);
• bytes:在緩存中存儲的字節數;
• noreply(可選): 該參數告知服務器不須要返回數據;
• value:存儲的值(始終位於第二行);

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set new_key 0 0 3
new
STORED
append new_key 0 0 3
old
STORED
get new_key
VALUE new_key 0 6
newold
END

輸出信息說明:
• STORED:保存成功後輸出;
• NOT_STORED:該鍵在 Memcached 上不存在;
• CLIENT_ERROR:執行錯誤;

5.prepend指令

prepend指令用於向已存在 key( 鍵) ) 的 value( 數據值) ) 前面追加數據 ,與append正好相反!

語法以下:

prepend key flags exptime bytes [noreply] value

參數說明:
• key:就是鍵的名稱;
• flags:能夠包括鍵值對的整型參數,能夠理解爲鍵的標記;
• exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠);
• bytes:在緩存中存儲的字節數;
• noreply(可選): 該參數告知服務器不須要返回數據;
• value:存儲的值(始終位於第二行);

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set q 0 0 3
qqq
STORED
prepend q 0 0 3
www
STORED
get q
VALUE q 0 6
wwwqqq
END

輸出信息說明:
• STORED:保存成功後輸出;
• NOT_STORED:該鍵在 Memcached 上不存在;
• CLIENT_ERROR:執行錯誤;

6.cas指令

cas指令用於執行一個"檢查並設置"的操做它僅在當前客戶端最後一次取值後,該 key 對應的值沒有被其餘客戶端修改的狀況下, 纔可以將值寫入。檢查是經過 cas_token 參數進行的, 這個參數是 Memcach 指定給已經存在的元素的一個惟一的 64 位值。

語法以下:

cas key flags exptime bytes unique_cas_token [noreply] value

參數說明以下:
• key:就是鍵的名稱;
• flags:能夠包括鍵值對的整型參數,能夠理解爲鍵的標記;
• exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠);
• bytes:在緩存中存儲的字節數;
• unique_cas_token 經過 gets 命令獲取的一個惟一的 64 位值;
• noreply(可選): 該參數告知服務器不須要返回數據;
• value:存儲的值(始終位於第二行);

要在 Memcached 上使用 CAS 命令,須要從 Memcached 服務商經過 gets 命令獲取令牌(token);
gets 命令的功能相似於基本的 get 命令。兩個命令之間的差別在於,gets 返回的信息稍微多一些:64 位的整型值很是像名稱/值對的 "版本" 標識符;

實例步驟以下:
• 若是沒有設置惟一令牌,則 CAS 命令執行錯誤;
• 若是鍵 key 不存在,執行失敗;
• 添加鍵值對;
• 經過 gets 命令獲取惟一令牌;
• 使用 cas 命令更新數據;
• 使用 get 命令查看數據是否更新;

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
cas tp 0 900 9
ERROR 
set tp 0 900 9
memcached
STORED
gets tp
VALUE tp 0 9 1
memcached
END
cas tp 0 900 5 1
redis
STORED
get tp
VALUE tp 0 5
redis
END

輸出信息說明:
• STORED:保存成功後輸出。
• ERROR:保存出錯或語法錯誤。
• EXISTS:在最後一次取值後另一個用戶也在更新該數據。
• NOT_FOUND:Memcached 服務上不存在該鍵值。

2、經常使用的查找指令

1.get指令

get指令獲取存儲在 key( 鍵) ) 中的 value( 數據值) ) ,若是 key 不存在,則返回空!

語法以下:

get key
多個 key 使用空格隔開,以下:
get key1 key2 key3

參數說明:
• key:鍵值 key-value 結構中的 key,用於查找緩存值;

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set lv 0 0 3
lzj
STORED
get lv
VALUE lv 0 3
lzj
END

2.gets指令

gets指令獲取帶有 CAS 令牌存 的 value( 數據值) ) ,若是 key 不存在,則返回空!

語法以下:

gets key 
多個 key 使用空格隔開,以下:
gets key1 key2 key3

參數說明:
• key:鍵值 key-value 結構中的 key,用於查找緩存值;

示例:
[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set lv 0 0 3
aaa
STORED
gets lv
VALUE lv 0 3 13
aaa
END
//在 使用 gets 命令的輸出結果中,在最後一列的數字13表明了 key 爲lv的 CAS 令牌

3.delete指令

delete指令用於刪除已存在的 key(鍵)!

語法以下:

delete key [noreply]

參數說明以下:
• key:就是鍵的名稱;
• noreply(可選): 該參數告知服務器不須要返回數據;

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set qqq 0 0 3
aaa
STORED
delete qqq
DELETED
get qqq
END

輸出信息說明:
• DELETED:刪除成功;
• ERROR:語法錯誤或刪除失敗;
• NOT_FOUND:key 不存在;

4.incr指令

incr指令用於對已存在的key(鍵)的數字值進行自增(必須是十進制的32位無符號整數)!

語法以下:

incr key increment_value

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

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set vi 0 0 2
10
STORED
incr vi 10
20
get vi
VALUE vi 0 2
20
END

輸出信息說明:
• NOT_FOUND:key 不存在;
• CLIENT_ERROR:自增值不是對象;
• ERROR 其餘錯誤,如語法錯誤等;

5.decr指令

decr指令用於對已存在的key(鍵)的數字值進行自減(必須是十進制的32位無符號整數),與incr指令相反!

語法:

decr key decrement_value

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

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set vim 0 0 2
10
STORED
decr vim 5
5
get vim
VALUE vim 0 2
5 
END

輸出信息說明:
• NOT_FOUND:key 不存在;
• CLIENT_ERROR:自增值不是對象;
• ERROR 其餘錯誤,如語法錯誤等;

6.stats指令

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

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
stats
STAT pid 10527
STAT uptime 4152
STAT time 1576506974
STAT version 1.4.33
STAT libevent 2.0.22-stable
STAT pointer_size 64
STAT rusage_user 1.118058
STAT rusage_system 0.698786
STAT curr_connections 5
STAT total_connections 21
STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 7
STAT cmd_set 19
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 6
STAT get_misses 1
STAT get_expired 0
STAT get_flushed 0
STAT delete_misses 1
STAT delete_hits 1
STAT incr_misses 0
STAT incr_hits 1
STAT decr_misses 0
STAT decr_hits 1
STAT cas_misses 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 815
STAT bytes_written 459
STAT limit_maxbytes 2147483648
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 648
STAT curr_items 9
STAT total_items 18
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END

參數解釋:
• 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_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:已過時的數據條目來存儲新數據的數目;

7.stats items指令

stats items指令用於顯示各個 slab 中 item 的數目和存儲時長(最後一次訪問距離如今的秒數);

語法以下:

stats items
!

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
stats items
STAT items:1:number 9
STAT items:1:age 3615
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
STAT items:1:crawler_reclaimed 0
STAT items:1:crawler_items_checked 0
STAT items:1:lrutail_reflocked 0
END

8.stats slabs指令

stats slabs指令用於顯示各個 slab 的信息,包括 chunk 的大小、數目、使用狀況等!

語法以下:

stats slabs

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 9
STAT 1:free_chunks 10913
STAT 1:free_chunks_end 0
STAT 1:mem_requested 648
STAT 1:get_hits 6
STAT 1:cmd_set 19
STAT 1:delete_hits 1
STAT 1:incr_hits 1
STAT 1:decr_hits 1
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

9.stats sizes指令

Memcached stats sizes 命令用於顯示全部 item 的大小和個數,該信息返回兩列,第一列是 item 的大小,第二列是 item 的個數!

語法以下:

stats sizes

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
stats sizes STAT 96 1 END
STAT sizes_status disabled
END

10.flush_all指令

flush_all 命令用於用於清理緩存中的全部 key=>value( 鍵 => 值) ) 對,該命令提供了一個可選參數 time,用於在指定的時間後執行清理緩存操做。

語法:

flush_all [time] [noreply]

示例:

[root@localhost ~]# telnet 192.168.1.10 11211
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
set lv 0 0 3
qwe
STORED
flush_all
OK
get lv
END

—————————本文到此結束,感謝閱讀—————————

相關文章
相關標籤/搜索