どんなキーが入ってるか確認することがあるので忘れないようメモ。
基本的に僕はこの3つしか使いません。
$ memcached-tool localhost:11211
$ echo 'stats cachedump [slab] [limit]' | nc localhost 11211
$ echo 'get [key]' | nc localhost 11211
上から順に
- どの slab にどれくらい cache されてるかとか見る
- slab 内の key name や 有効期限を見る
- key に保存されている値を見る
どの slab にどれくらい cache されてるかとか見る
$ memcached-tool localhost:11211
# Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM
1 96B 367s 1 2 no 0 0 0
3 152B 0s 1 0 no 0 0 0
4 192B 0s 1 0 no 0 0 0
5 240B 0s 1 0 no 0 0 0
6 304B 0s 1 0 no 0 0 0
7 384B 0s 1 0 no 0 0 0
18 4.4K 0s 1 0 no 0 0 0
19 5.5K 0s 1 0 no 0 0 0
27 33.1K 0s 1 0 no 0 0 0
Count 列を見ると slab#1 に2個だけ item が保存されていることがわかります。
他の slab は領域は確保しているが item は入っていない(expire したか delete された)状態です。
このコマンドの詳細な見方は別の記事やドキュメントに譲ります。
slab 内の key name や 有効期限を見る
slab#1 に存在する item を 5件出力
$ echo 'stats cachedump 1 5' | nc localhost 11211
ITEM foo [15 b; 1551662258 s]
ITEM hoge [4 b; 0 s]
END
key ・バイト数・有効期限(UNIXTIME)が item ごとに出力されます。
新しく set した順に出力されてるようです。
key に保存されている値を見る
$ echo 'get foo' | nc localhost 11211
VALUE foo 0 15
0123456789abcde
END
"0123456789abcde" が保存されていました。
(おまけ)今回のデータ
忘れそうなのでメモ。
set key [flag] [expire] [byte]
- flag: 0 でいい
- expire: 秒数で指定。 0 ならずっと生きる
- byte: 2行目で入力する value はこの byte じゃないと
CLIENT_ERROR bad data chunk
が出るので注意
$ nc -c localhost 11211
set hoge 0 0 4[Enter]
fuga[Enter]
STORED
set foo 0 1000 15[Enter]
0123456789abcde[Enter]
STORED
改行コードは CRLF にしないといけないので注意。
僕の手元の環境では c オプションで変えられました。
$ man nc
...
-c Send CRLF as line-ending
...
参考
後で自分で見返す時用の memcached の挙動についてメモ。
- 最初のコマンドの理解にすごく役立つ:memcachedのメモリストレージを理解する
- (この記事とはほぼ関係ないが読んでて面白かった)cache の消去メカニズムについて:gihyo.jp, memcached.org