博文大綱:
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
經常使用的存儲數據的指令有: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數據內容,發送完數據之後,客戶端通常等待服務器端的返回;
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:保存失敗;
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:保存失敗;
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:保存失敗;
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:執行錯誤;
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:執行錯誤;
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 服務上不存在該鍵值。
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
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 令牌
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 不存在;
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 其餘錯誤,如語法錯誤等;
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 其餘錯誤,如語法錯誤等;
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:已過時的數據條目來存儲新數據的數目;
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
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
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
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
—————————本文到此結束,感謝閱讀—————————