1. 程式人生 > >(轉)Memcached用法--參數和命令詳解

(轉)Memcached用法--參數和命令詳解

root 操作 時間戳 tro 2.0 not git item 不同的

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詳解
  • 本文作者: Daniel
  • 本文鏈接: http://nkcoder.github.io/2014/02/15/memcached-usage-parameters-commands/

(轉)Memcached用法--參數和命令詳解