Redis CLI チートシート
redis-cli を素早く参照:接続 / info、key / string、ハッシュ、リスト、セット、ソート済みセット、ストリーム、パブ/サブ、サーバ管理、永続化 / レプリケーション、診断 — よく使うオプションと実用例をまとめました。
42 コマンド
接続 / Info
redis-cli -h <host> -p <port> -a <pwd>Redis サーバに接続して対話 REPL を開きます。
-h host; -p 6379; -a password; --user user; --pass password; --tls; --insecure; -n dbnum
redis-cli -h redis.internal -p 6379 --user monitoring --pass ***redis-cli AUTH <password>現在の接続で認証します(REPL を開いた後)。
--user <user> && AUTH password; ACL 形式
redis-cli AUTH my_secret_passwordredis-cli PINGPING を送信;PONG が返ってくるはず — 基本的な接続性 / ヘルス チェック。
任意の接続オプション -h / -p / --pass; -r 繰り返し; -i 間隔
redis-cli -h redis -p 6379 -i 5 PINGredis-cli INFO [section]サーバ統計を表示(server / clients / memory / replication / keyspace / stats など)。
INFO [server|clients|memory|stats|replication|keyspace|cluster|commandstats]; --stat 簡易ライブ カウンタ
redis-cli -h redis INFO memory | head && redis-cli --stat -i 5 -h redisredis-cli CLIENT LIST現在のクライアント接続を一覧(id、addr、fd、name など)。
CLIENT LIST; CLIENT GETNAME; CLIENT SETNAME
redis-cli CLIENT LIST | awk '{print $1, $2}' | headredis-cli CLIENT KILL <id|addr>クライアントを切断(id、addr host:port、TYPE / ADDR / USER / LADDR フィルタ)。
KILL ADDR ip:port; KILL TYPE normal|master|replica|pubsub; KILL USER username
redis-cli CLIENT KILL ADDR 10.0.1.42:54321 && redis-cli CLIENT LIST | wc -lKey / String
GET / SET / SETEX / SETNX文字列の読み書き;SETEX で TTL 付与、SETNX はキーが無い場合のみ書込。
SET key val EX N(TTL 秒)| PX N(ms)| NX/XX; GETEX(Redis 6.2)
redis-cli SET session:42 '{"user":42}' EX 3600 NX && redis-cli GET session:42MSET / MGET / MSETNX複数キーの文字列操作;MSETNX はいずれかキーが存在すれば失敗。
redis-cli MSET cache:hit:1 ok cache:hit:2 ok && redis-cli MGET cache:hit:1 cache:hit:2 cache:miss:1INCR / INCRBY / INCRBYFLOATアトミックなカウンタ操作 — レート リミッタやカウンタに最適。
redis-cli INCR ratelimit:user:42
redis-cli INCRBY hitcounter:2026-07-23 5
redis-cli INCRBYFLOAT metric:load 0.05APPEND / STRLEN / DEL / EXISTS文字列キーの基本管理:追記、長さ、単一 / 複数削除。
DEL key [key ...]; EXISTS k1 k2(存在する数); TYPE key
redis-cli APPEND log:42 'request\n' && redis-cli STRLEN log:42キー / TTL
EXPIRE / PEXPIRE / TTL / PTTL / PERSIST / EXPIREATTTL の設定 / 表示(秒 / ミリ秒 / Unix 絶対時間);PERSIST でクリア。
EXPIRE key seconds; PEXPIRE key ms; EXPIREAT key unix_seconds; NX/XX/GT/LT
redis-cli EXPIRE session:42 300 && redis-cli TTL session:42KEYS pattern / SCANKEYS は O(N) で大規模 DB では危険 — カーソル付き SCAN を推奨。
SCAN cursor MATCH pattern COUNT N TYPE type; --no-warnings
redis-cli --scan --pattern 'cache:hit:*' | head -20OBJECT ENCODING|HELP|FREQ|IDLETIME|REFCOUNT <key>内部エンコーディング / メモリ / 最終アクセスを調査(デバッグ / RDS 性能チューニング)。
redis-cli OBJECT ENCODING big:set && redis-cli OBJECT IDLETIME big:setハッシュ
HSET / HGET / HMSET / HMGET / HGETALL小さなオブジェクトをハッシュとして格納 — プロファイル / 設定 / セッションに最適。
HSET key f1 v1 f2 v2; HMGET key f1 f2; HSETNX f v 未存在時のみ設定
redis-cli HMSET user:42 name Alice email [email protected] && redis-cli HGETALL user:42HKEYS / HVALS / HLEN / HEXISTS / HDELハッシュの閲覧と整理:キー / 値 / 長さ / 存在 / 削除。
redis-cli HKEYS user:42 && redis-cli HLEN user:42 && redis-cli HEXISTS user:42 adminHINCRBY / HINCRBYFLOATハッシュ フィールドに対するアトミック カウンタ — ネストしたカウント指標に最適。
redis-cli HINCRBY orders:2026-07-23 paid_count 1 && redis-cli HINCRBYFLOAT orders:2026-07-23 gmv 19.95リスト
LPUSH / RPUSH / LPOP / RPOPリストをキュー(LPUSH / LPOP = FIFO)またはスタック(LPUSH / RPOP = バックオフ付きキュー)として扱う。
redis-cli RPUSH jobs:queue job1 job2 job3 && redis-cli LPOP jobs:queueLRANGE / LLEN / LINDEX / LSET / LREMリストの範囲読み取り / 管理;LSET はインデックス必須;LREM は count>0 で先頭、<0 で末尾から。
LRANGE key 0 -1 全件; LINDEX 0 先頭; LREM 0 value 全件; LTRIM start stop 範囲のみ保持
redis-cli LRANGE jobs:queue 0 -1 && redis-cli LTRIM logs:2026-07-23 -1000 -1BLPOP / BRPOP / BRPOPLPUSHブロッキング版 — 空なら N 秒待機して pop;安全なキュー ワーカー向け。
BLPOP key timeout(秒、0=無制限); COUNT オプション(Redis 6.2+)
redis-cli BLPOP jobs:queue 0RPOPLPUSH src dst / LMOVE src dst LEFT|RIGHT (6.2+)片側から pop して別側へ push — 安全なキュー処理向け。
redis-cli LMOVE jobs:queue jobs:processing RIGHT LEFTセット
SADD / SMEMBERS / SCARD / SISMEMBERセットの操作:メンバーシップ、サイズ、一括確認(0 / 1 を返す)。
SADD k m1 m2 ...; SCARD k; SISMEMBER k m
redis-cli SADD tags:42 redis postgres mongo && redis-cli SCARD tags:42SREM / SPOP / SRANDMEMBER削除 / ランダム pop(削除)/ ランダム抽出(保持)— サンプリングやくじ引きに。
redis-cli SRANDMEMBER lottery:tickets 3 && redis-cli SPOP lottery:tickets 1SINTER / SUNION / SDIFF / SDIFFSTORE集合演算 — 共通 / 和 / 差を計算;*_STORE は結果をキーへ書込。
redis-cli SINTER tags:a tags:b tags:c && redis-cli SDIFFSTORE missing:set tags:all tags:42ソート済みセット(Zset)
ZADD / ZSCORE / ZRANGE / ZCARDスコア付きでメンバを格納;ZRANGE はスコア順(WITHSCORES)または辞書順。
ZADD k score m [score m ...]; ZRANGEBYSCORE -inf +inf; ZREVRANGE
redis-cli ZADD lb:game alice 1500 bob 1300 carol 1750 && redis-cli ZRANGE lb:game 0 -1 REV WITHSCORESZRANGEBYSCORE / ZRANK / ZINCRBY / ZREMzset の範囲 / ランク / カウンタ — トップ N、下限スライド、ランキング。
ZRANGEBYSCORE min max LIMIT offset count; ZREVRANK; ZREM k m [m...]
redis-cli ZADD ratelimit:api 1750731000.123 10.0.1.42 1750731050.456 10.0.1.7 && redis-cli ZREMRANGEBYSCORE ratelimit:api 0 $(date +%s.%N --date='-5 minutes')Pub/Sub と Streams
SUBSCRIBE / PSUBSCRIBE / PUBLISH / UNSUBSCRIBEリアルタイム pub/sub — 軽量なブロードキャストで永続化なし。
PSUBSCRIBE news:*; PUBLISH channel msg; PUB/SUB NUMSUB で確認
redis-cli PSUBSCRIBE 'app.*' & PID=$!; redis-cli PUBLISH app.notice 'red-button pressed'; sleep 0.1; kill $PIDXADD / XLEN / XRANGE / XREADStream = コンシューマ グループ付きの追記専用ログ(Redis 5+)。
XADD k * f v; XADD k MAXLEN ~ 1000 * f v(上限付き); XREAD / XREADGROUP; コンシューマ名; XAUTOCLAIM
redis-cli XADD events * user 42 action click && redis-cli XLEN events && redis-cli XRANGE events - +XREAD BLOCK 0 STREAMS k $新規エントリを永遠に待機 — ワーカー キューにはコンシューマ グループと併用。
redis-cli XGROUP CREATE events grp1 0 MKSTREAM && redis-cli XREADGROUP GROUP grp1 c1 BLOCK 0 COUNT 10 STREAMS events '>'サーバ管理
FLUSHDB / FLUSHALL [ASYNC]現在(FLUSHDB)/ 全(FLUSHALL)データベースを消去。⚠️ 破壊的。
FLUSHALL ASYNC; FLUSHDB ASYNC; --no-auth-warning
redis-cli -h dev FLUSHDBDBSIZE / CONFIG GET|SET <key>キー数とランタイム設定(memory 制限、appendonly 等)を確認。
CONFIG GET dir/save/maxmemory; CONFIG SET maxmemory 1gb; CONFIG REWRITE 永続化
redis-cli CONFIG SET maxmemory-policy allkeys-lru && redis-cli CONFIG REWRITESLOWLOG GET|len|resetslowlog-log-slower-than(マイクロ秒)を超えるコマンドを調査。
SLOWLOG GET 10; SLOWLOG LEN; SLOWLOG RESET
redis-cli SLOWLOG GET 10 | jq '.[].command'MONITOR全クライアントの全コマンドをストリーム化 — デバッグ専用で高コスト。
追加フラグなし; --bigkeys(redis-cli --bigkeys と併用推奨); --memkeys; --latency; --intrinsic-latency
timeout 2 redis-cli MONITOR | grep -E 'EXPIRE|GET.*:42'DEBUG ... / MEMORY USAGE <key>内部状態を調査:OBJECT エンコーディング、キー毎メモリ(デバッグ専用フラグ)。
MEMORY USAGE key [SAMPLES N]; DEBUG OBJECT-DURATION / DEBUG RELOAD-ALL-COMMANDS(稀)
redis-cli MEMORY USAGE user:42 SAMPLES 5 && redis-cli MEMORY DOCTORACL WHOAMI / ACL CAT / ACL GETUSERACL デバッグ(Redis 6+)。
redis-cli ACL WHOAMI && redis-cli ACL GETUSER deployer | head -20永続化
BGSAVE / SAVE / LASTSAVERDB スナップショットをトリガ(BGSAVE = fork + 非同期);LASTSAVE は最終スナップショット時刻。
redis-cli BGSAVE && redis-cli LASTSAVEBGREWRITEAOFバックグラウンドで AOF ファイルを書き直し(コンパクション)。
rewrite 中も短時間ブロック;auto-aof-rewrite-percentage で自動トリガ
redis-cli BGREWRITEAOF && redis-cli INFO persistence | headREPLICAOF host port (was SLAVEOF)このインスタンスを他のレプリカにする(または REPLICAOF NO ONE で昇格)。
redis-cli REPLICAOF redis-master 6379 && redis-cli REPLICAOF NO ONEパイプライン / スキャン
redis-cli ... < commands.txtパイプライン:stdin から 1 ラウンド トリップで複数コマンドを一括送信。
--pipe モードは RESP を使用; < file.txt
printf 'SET k1 v1\nSET k2 v2\nGET k1\nGET k2\nINCR counter\n' | redis-cli --pipe | headredis-cli --scan --pattern '...'サーバ側カーソル スキャンで KEYS のような O(N) を回避。
--scan --pattern p; --bigkeys / --memkeys / --hotkeys(サンプリング)
redis-cli --scan --pattern 'session:*' | wc -l診断
redis-cli --bigkeys / --memkeys最大キー / キー毎メモリを発見;サンプリング ベース(サーバを凍結しない)。
redis-cli -h prod --bigkeys --i 0.01 | tee /tmp/bigkeys.logredis-cli --latency / --latency-historyライブ レイテンシ ヒストグラム(min / max / avg)を数サンプルで。
--latency; --latency-history -i 5; --intrinsic-latency N(OS クロック診断)
redis-cli -h prod --latency-history -i 5 > /tmp/lat.log & sleep 30; kill %1redis-cli CLUSTER INFO / CLUSTER NODESクラスタの状態:スロット、ノード役割(master / replica)、状態。
redis-cli --cluster check 10.0.0.1:6379チートシート バージョン 1.0.0
Redis 6.2+ に対応