Help us understand the problem. What is going on with this article?

memcached に保存されている key や value の情報を見る

どんなキーが入ってるか確認することがあるので忘れないようメモ。
基本的に僕はこの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 の挙動についてメモ。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした