(轉)Memcached用法--參數和命令詳解
Memcached用法--參數和命令詳解
1. memcached 參數說明:
# memcached -h
1.1 memcached 的參數
常用參數
-p <num> 監聽的TCP端口號,默認是11211;(port) -l <addr> 監聽的主機地址,默認是INADDR_ANY,即所有地址,<addr>可以是host:port的形式,如果沒有指定port,則使用-p或者-U的值;可以指定多個地址,以逗號分隔或者多次使用-l參數;盡量不要使用默認值,有安全隱患。(listen) -d 以守護進程運行 (daemon) -u <username> 指定進程的所有者(只有以root用戶執行時才可以使用該參數)(username) -m <num> 用於存儲數據的最大內存,單位是MB,默認是64MB;(memory) -c <num> 最大並發連接數,默認是1024; -vv 顯示更詳細的信息(還顯示客戶端的命令和響應) -vvv 顯示最詳細的信息(還顯示內部的狀態轉變) -h 顯示幫助信息 -P <file> 將PID保存到<file>中,僅和-d參數一起使用; -f <factor> chunk的增幅因子,默認是1.25,不同的slab class,slab page大小相同,但是chunk大小不等,chunk的大小根據這個增幅因子增長;(factor) -n <bytes> 為key+value+flags分配的最小內存,單位bytes,默認是48;chunk數據結構本身要占據48字節,所以實際大小是n+48; -t <num> 使用多少個線程,默認是4;(thread) -I 設置slab page的大小,即設置可以保存的item的最大值,默認1MB,最小是1K,最大值128M;
其它參數
-U <num> 監聽的UDP端口號,默認是11211,0表示關閉UDP監聽;(UDP) -s <file> 要監聽的UNIX socket路徑(禁用網絡支持)(socket) -a <mask> UNIX socket的訪問掩碼(access mask),八進制表示,默認是0700. (mask) -r 文件數量的最大值 (rlimit) -M 內存耗盡時返回錯誤,而不是通過LRU淘汰內容; -k 鎖定所有頁內存;允許被鎖定的內存是有限制的,超過限制可能會失敗。 -v 顯示啟動信息(錯誤和警告信息)(verbose) -i 顯示memcached和libevent的licence信息 -L 一次申請大的內存頁(如果可以);增大內存頁的大小,可以提高性能; -D <char> 指定key前綴與ID的分隔符,用於stats信息顯示,默認是冒號:,如果使用了該參數,則stats收集自動啟用了,否則,需要發送命令“stats detail on”命令來啟動stats的收集。 -R 每一個事件(event)的最大請求數,限制最大請求數可以防止線程饑餓,默認是20; -C 禁用CAS; -b 設置backlog隊列限制,默認1024; -B 指定綁定協議,ascii,binary或者auto,其中auto是默認值;
1.2 repcached的參數:
-x <ip_addr> peer主機的主機名或者ip地址;
-X peer主機的TCP端口,即主從同步端口,共同的監聽端口
1.3 常用的參數組合
# memcached -d -m -p 11212 -u nobody -l 127.0.0.1 -x 127.0.0.1 -X 11222 -P /tmp/localhost_slave.pid -vv
2. 基本命令與操作
2.1 存儲的命令
主要有:set,add,replace,append,prepend,cas;格式為:
command key flag expiration_time bytes value
key表示鍵,flag表示key/value的額外信息,expiration_time表示過期時間,單位為秒,0表示永不過期,bytes表示值所占的字節數,必須完全匹配,value表示key對應的值,總是出現在第二行。
set命令表示存儲一個key/value對,如果該key已存在,則更新對應的value值;如果成功,返回STORED。
set file_path 0 0 5
/opt/
<29 rep file_path 0 0 5 12
REP>29 STORED
STORED
add命令也表示增加key/value,如果key/value已存在,add操作失敗;保存成功返回STORED,失敗返回NOT_STORED。
add file_path 0 60 5
/opt/
NOT_STORED
add file_suffix 0 0 2
js
<29 rep file_suffix 0 0 2 16
REP>29 STORED
STORED
replace命令表示更新key對應的value值,如果key/value不存在,replace操作失敗;成功返回STORED,失敗返回NOT_STORED;
replace first 0 0 7
tianjin
STORED
replace second 0 0 8
shanghai
NOT_STORED
append表示在key對應的value值後追加數據,key必須已存在,否則操作失敗;成功返回STORED,失敗返回NOT_STORED;
append second 0 0 8
shanghai
NOT_STORED
append first 0 0 3
go
STORED
prepend在key對應的value值的前面追加數據,key必須已存在,否則操作失敗;成功返回STORED,失敗返回NOT_STORED;
prepend second 0 0 2
hi
NOT_STORED
prepend first 0 0 2
hi
STORED
get first
VALUE first 0 15
hitianjin go go
END
cas (check and set):先比較後存儲,即原子更新,原理類似於樂觀所。每次請求存儲某個數據時附帶一個cas值,memcached比對這個cas值與當前存儲數據的cas值是否相等,如果相等,則更新數據,否則操作失敗;當前存儲的cas值通過gets命令獲取。成功返回STORED,失敗返回EXISTS。
gets first
VALUE first 0 7 12 // 12表示cas id,可以理解為版本號
chengdu
END
cas first 0 0 8 10 // 10 != 12,cas失敗
shanghai
EXISTS
cas first 0 0 8 12 // 12表示gets後沒有修改key的值,因此可以set
shanghai
STORED
2.2 讀取的命令
get根據key獲取value值;可以獲取多個key的值;get key | get key1 key2
get first
VALUE first 0 8
shanghai
END
get first fine
VALUE first 0 8
shanghai
VALUE fine 0 5
yes!!
END
gets是與cas一起使用的命令,gets會額外返回一個cas值,可以理解為版本;如果最後一次gets後,該cas值改變了,則cas設置的值不會存儲;gets key | gets key1 key2
gets first
VALUE first 0 8 13
shanghai
END
set first 0 0 7
chengdu
STORED
cas first 0 0 7 13 // 因為gets後set了,所以cas id改變了,cas失敗
chengdu
EXISTS
delete命令刪除key/value對,一次只能刪除一個key/value對;如果要刪除的key不存在,操作失敗: delete key
delete first second
CLIENT_ERROR bad command line format. Usage: delete <key> [noreply]
delete first
DELETED
incr/decr: 如果key的value值表示的是一個64位整數,可以通過incr和decr命令進行數值的增減: incr/decr key num
set id 0 120 2
10
STORED
incr id 10
20
decr id 5
15
2.3 統計的命令
stats顯示進程及當前狀態等信息。
stats
STAT pid 1224 // 進程id
STAT uptime 30385 // 系統運行的事件,單位:秒
STAT time 1392199633 // 系統當前事件,Unix時間戳表示的時間:2/12/2014 6:25:40 PM
STAT version 1.4.13 // memcached版本
STAT libevent 2.0.21-stable // libevent版本
STAT pointer_size 64 // 操作系統字大小(64位)
STAT rusage_user 1.892712 // 進程累計用戶時間
STAT rusage_system 0.996848 // 進程累計系統時間
STAT curr_connections 8 // 當前打開的連接數
STAT total_connections 9 // 曾打開的連接總數
STAT connection_structures 9 // 服務器分配的連接結構數
STAT reserved_fds 20
STAT cmd_get 29 // 執行get命令的總數
STAT cmd_set 29 // 執行set命令的總數
STAT cmd_flush 2 // 執行flush_all命令的總數
STAT cmd_touch 0
STAT get_hits 14
STAT get_misses 15
STAT delete_misses 3
STAT delete_hits 3
STAT incr_misses 0
STAT incr_hits 4
STAT decr_misses 0
STAT decr_hits 2
STAT cas_misses 1
STAT cas_hits 2
STAT cas_badval 2
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 1503
STAT bytes_written 4125
STAT limit_maxbytes 134217728
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4 // 線程數
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT replication MASTER
STAT repcached_version 2.3.1
STAT repcached_qi_free 8191
STAT bytes 217 // 存儲的item字節數
STAT curr_items 3 // 當前item數量
STAT total_items 25 // item的總數
STAT evictions 0 // 為獲取空間刪除的item數量
STAT reclaimed 2
END
stats items 顯示items的相關信息
stats items
STAT items:1:number 3
STAT items:1:age 1552
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 2
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END
stats slabs 顯示slab的相關信息
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 3
STAT 1:free_chunks 0
STAT 1:free_chunks_end 10919
STAT 1:mem_requested 217
STAT 1:get_hits 14
STAT 1:cmd_set 29
STAT 1:delete_hits 3
STAT 1:incr_hits 4
STAT 1:decr_hits 2
STAT 1:cas_hits 2
STAT 1:cas_badval 2
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END
stats sizes
stats sizes
STAT 96 3
END
stats cachedump 顯示slab中items的信息(該命令在將來可能不再支持):stats cachedump [slab id] [number of items, 0 for all items]
set city 0 0 7
tianjin
STORED
stats cachedump 1 0
ITEM city [7 b; 1392169248 s]
END
get city
VALUE city 0 7
tianjin
END
flush_all 使cache中的所有items都過期,server不會停止,也不會刷新或者釋放內存。
flush_all
OK
get first
END
參考
- memcached wiki
- memcached命令行操作
- memcached命令行參數說明
- memcached詳解
- 本文鏈接: http://nkcoder.github.io/2014/02/15/memcached-usage-parameters-commands/
(轉)Memcached用法--參數和命令詳解