
memcachedをコマンドラインで操作する完全ガイド【telnet・nc・stats解説 2024年版】
memcachedは高速なインメモリキャッシュシステムとして広く使われていますが、「中身を直接確認したい」「特定のキーを削除したい」といった場面で、コマンドラインから直接操作する方法を知っておくと非常に便利です。
本記事では、telnetやncコマンドを使ったmemcachedへの接続方法から、キーの一覧取得・値の確認・削除・フラッシュまで、実務でよく使うコマンドを網羅的に解説します。

memcachedへの接続方法
memcachedはデフォルトでポート11211でTCP/UDPリクエストを受け付けます。コマンドラインから接続するにはtelnetまたはnc(netcat)を使います。
telnetで接続する
telnet localhost 11211
接続に成功すると以下のように表示されます:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
nc(netcat)で接続する
telnetが使えない環境では、ncを使うことができます。特にシェルスクリプトからのワンライナー実行に便利です。
echo "stats" | nc localhost 11211
または対話モードで接続する場合:
nc localhost 11211
切断方法
telnet接続を切断する際は、quitコマンドを入力するか、Ctrl+] → qで切断します。
quit
memcachedの基本コマンド一覧
memcachedのコマンドプロトコルはシンプルなテキストベースです。接続後に以下のコマンドが使えます。
| コマンド | 用途 |
|---|---|
stats |
サーバー全体の統計情報 |
stats items |
スラブ(slab)ごとのアイテム数 |
stats cachedump <slab_id> <limit> |
スラブ内のキー一覧 |
get <key> |
キーの値を取得 |
set <key> <flags> <exptime> <bytes> |
キーと値を設定 |
delete <key> |
キーを削除 |
flush_all |
全キャッシュをフラッシュ |
version |
memcachedのバージョン確認 |
キャッシュ内のデータを確認する手順
memcachedはデータをスラブ(slab)という単位で分けて管理しています。そのため「全キーを一覧で取得する」コマンドは存在せず、スラブ番号を経由して順番に確認します。

ステップ1:stats itemsでスラブ一覧を取得
stats items
実行結果の例:
STAT items:13:number 1
STAT items:13:age 23763
STAT items:13:evicted 0
STAT items:13:evicted_nonzero 0
STAT items:13:evicted_time 0
STAT items:13:outofmemory 0
STAT items:13:tailrepairs 0
STAT items:13:reclaimed 0
STAT items:14:number 2
STAT items:14:age 23742
STAT items:14:evicted 0
STAT items:14:evicted_nonzero 0
STAT items:14:evicted_time 0
STAT items:14:outofmemory 0
STAT items:14:tailrepairs 0
STAT items:14:reclaimed 0
END
items:13:number 1 の 13 がスラブ番号、1 がそのスラブに格納されているアイテム数です。
ステップ2:stats cachedumpでキー一覧を取得
スラブ番号がわかったら、そのスラブに含まれるキーの一覧を取得します。
stats cachedump 13 1000
- 第1引数:スラブ番号(上記で確認した番号)
- 第2引数:取得するキーの最大数(0にすると全件)
実行結果の例:
ITEM session_user_123 [1264 b; 1332315959 s]
ITEM session_user_456 [1264 b; 1332315959 s]
END
ITEM <key> [<bytes> b; <expiry> s] の形式で、キー名・データサイズ・有効期限(UNIXタイムスタンプ)が表示されます。
ステップ3:getでキーの値を取得
get session_user_123
実行結果の例:
VALUE session_user_123 0 1264
{"user_id":123,"name":"gendosu","role":"admin"}
END
VALUE <key> <flags> <bytes> の後に実際の値が続きます。
データの書き込み・削除
setコマンドで値を設定する
set mykey 0 300 11
hello world
コマンドの書式:
set <キー名> <フラグ> <有効期限(秒)> <バイト数>
<値>
- フラグ:アプリケーション側が任意に使う整数(通常は0)
- 有効期限:0で無期限、秒数を指定(最大30日 = 2592000秒)
- バイト数:値のバイト数(値の文字数と一致させること)
成功すると STORED が返ります。
STORED
deleteコマンドでキーを削除する
delete mykey
成功時は DELETED、キーが存在しない場合は NOT_FOUND が返ります。
flush_allで全キャッシュをクリアする
flush_all
注意:flush_allは全データを削除します。本番環境での実行は慎重に行ってください。
開発環境でのみ使用するか、遅延フラッシュ(秒数指定)を活用します:
flush_all 60
60秒後にフラッシュされます(その間に追加されたデータは保持されます)。
サーバー統計情報の確認
statsコマンドで全体の状態を確認
stats
主要な統計情報の見方:
| 項目 | 意味 |
|---|---|
curr_connections |
現在の接続数 |
curr_items |
現在のキャッシュアイテム数 |
bytes |
現在使用中のメモリ(バイト) |
limit_maxbytes |
メモリ使用上限 |
get_hits |
キャッシュヒット数 |
get_misses |
キャッシュミス数 |
evictions |
メモリ不足によるキャッシュ追い出し数 |
uptime |
起動からの経過秒数 |
キャッシュヒット率は get_hits / (get_hits + get_misses) で計算できます。
versionでバージョン確認
version
VERSION 1.6.23
シェルスクリプトでの自動化
ncを使うと、シェルスクリプトから一括でmemcachedを操作できます。
全スラブのキーを一覧取得するワンライナー
#!/bin/bash
HOST=localhost
PORT=11211
# stats itemsからスラブ番号を抽出
slab_ids=$(echo "stats items" | nc $HOST $PORT | grep -oP 'items:\K[0-9]+(?=:number)' | sort -u)
for slab_id in $slab_ids; do
echo "=== Slab $slab_id ==="
echo "stats cachedump $slab_id 0" | nc $HOST $PORT
done
特定プレフィックスのキーをまとめて削除する
#!/bin/bash
HOST=localhost
PORT=11211
PREFIX="session_"
# キー一覧を取得してプレフィックス一致のものを削除
for slab_id in $(echo "stats items" | nc $HOST $PORT | grep -oP 'items:\K[0-9]+(?=:number)' | sort -u); do
echo "stats cachedump $slab_id 0" | nc $HOST $PORT \
| grep "^ITEM ${PREFIX}" \
| awk '{print $2}' \
| while read key; do
echo "delete $key" | nc $HOST $PORT
echo "Deleted: $key"
done
done

セキュリティに関する注意事項
memcachedはデフォルトで認証機能を持たないため、ネットワーク設定が重要です。
ループバックインターフェースのみでリッスンする
/etc/memcached.conf(Debian/Ubuntu系)または起動オプションで、ループバックアドレスのみにバインドします:
-l 127.0.0.1
ファイアウォールでポートを遮断する
外部からポート11211へのアクセスをiptablesで遮断します:
sudo iptables -A INPUT -p tcp --dport 11211 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 11211 -j DROP
SASL認証を有効にする(memcached 1.4.3以降)
memcached 1.4.3以降ではSASL認証が利用可能ですが、通常はループバック+ファイアウォールの組み合わせで十分なセキュリティが確保できます。
よくあるエラーと対処法
「Connection refused」が出る場合
memcachedが起動しているか確認します:
# 起動状態の確認
sudo systemctl status memcached
# プロセス確認
ps aux | grep memcached
# ポートのListen確認
ss -tlnp | grep 11211
「CLIENT_ERROR」が出る場合
setコマンドでバイト数と実際の値の長さが一致しないと発生します。
CLIENT_ERROR bad data chunk
バイト数を正確に計算して再実行してください:
echo -n "hello world" | wc -c
# → 11
ncコマンドで応答が返らない場合
ncのバージョンによって動作が異なります。-q オプションで接続終了後のタイムアウトを指定します:
echo "stats" | nc -q 1 localhost 11211
または ncat(nmap-ncat)を使うと安定します:
echo "stats" | ncat localhost 11211
まとめ
memcachedをコマンドラインで操作する際の流れをまとめます:
- 接続:
telnet localhost 11211またはnc localhost 11211 - スラブ確認:
stats itemsでスラブ番号を把握 - キー一覧:
stats cachedump <slab_id> 1000でキーを確認 - 値の確認:
get <key>で値を取得 - 値の設定:
set <key> <flags> <exptime> <bytes>+ 値 - 削除:
delete <key>またはflush_all
memcachedの動作を直接確認できるコマンドラインスキルは、デバッグ・障害対応・パフォーマンスチューニングのあらゆる場面で役立ちます。本記事のコマンドを参考に、日常的なキャッシュ管理に活用してください。

