redis-cli チートシート

cheatsheet

🔌 接続と基本操作

Redisサーバーへの接続や、サーバー自体の基本的な操作を行うコマンドです。

目的 コマンド例 説明
ローカル接続 (デフォルト)
redis-cli
デフォルトのポート(6379)でローカルホスト(127.0.0.1)に接続します。
ホストとポート指定接続
redis-cli -h <hostname> -p <port>
指定したホスト名とポート番号で接続します。 例: `redis-cli -h my.redis.server -p 6380`
パスワード認証付き接続
redis-cli -a <password>
パスワードを指定して接続します。`-h` や `-p` オプションと組み合わせ可能です。
URI指定接続
redis-cli -u redis://:[password@]<hostname>[:port][/database]
Redis URI スキームを使用して接続します。パスワード、ホスト、ポート、データベース番号を一度に指定できます。 例: `redis-cli -u redis://user:password@my.redis.server:6379/0`
Unixソケット接続
redis-cli -s /path/to/redis.sock
指定したUnixドメインソケットファイル経由で接続します。
接続確認
PING
サーバーが生存しているか確認します。通常 `PONG` が返されます。
引数を与えるとその引数が返されます。例: `PING “Hello?”` -> `”Hello?”`
サーバー情報取得
INFO [section]
サーバーの各種情報を取得します。`section` を指定すると特定のセクションの情報のみ取得できます (例: `INFO memory`, `INFO stats`)。
クライアント一覧表示
CLIENT LIST
現在接続中のクライアントの一覧を表示します。
クライアント切断
CLIENT KILL <ip:port>
指定したクライアントを強制的に切断します。IPアドレスとポートは `CLIENT LIST` で確認できます。
設定値取得
CONFIG GET <parameter>
サーバーの設定値を取得します。ワイルドカードも使用可能です。例: `CONFIG GET *max-*-entries*`
設定値変更
CONFIG SET <parameter> <value>
サーバーの設定値を動的に変更します(対応しているパラメータのみ)。変更は永続化されないため、`redis.conf` も編集する必要があります。例: `CONFIG SET maxmemory 2gb`
シャットダウン
SHUTDOWN [NOSAVE|SAVE]
Redisサーバーをシャットダウンします。`NOSAVE` を指定するとデータ保存を行わず、`SAVE` を指定するとデータ保存を行ってからシャットダウンします(デフォルト)。
データベース切り替え
SELECT <index>
使用するデータベースを切り替えます。インデックスは 0 から始まります (デフォルトは 0)。
現在のDBのキー数
DBSIZE
現在選択されているデータベース内のキーの数を返します。
現在のDB全削除
FLUSHDB
現在選択されているデータベース内の全てのキーを削除します。⚠️ 注意して使用してください。
全DB全削除
FLUSHALL
Redisサーバー上の全てのデータベース内の全てのキーを削除します。⚠️⚠️ 極めて危険な操作です。細心の注意を払ってください。

🔑 キー操作

キーの検索、削除、リネーム、有効期限の設定など、キー自体に対する操作です。

目的 コマンド例 説明
キー一覧取得
KEYS <pattern>
指定したパターンに一致するキーの一覧を取得します。`*` (任意文字列), `?` (任意1文字), `[]` (文字クラス) が使用可能です。例: `KEYS user:*`, `KEYS config:??`
⚠️ キーが多い場合、サーバーパフォーマンスに影響を与える可能性があります。本番環境では `SCAN` の使用を推奨します。
キー存在確認
EXISTS <key> [<key> ...]
指定したキーが存在するか確認します。存在するキーの数を返します。複数キーを指定可能です。
キー削除
DEL <key> [<key> ...]
指定したキーを削除します。削除されたキーの数を返します。複数キーを指定可能です。
キーの型確認
TYPE <key>
指定したキーのデータ型を返します (`string`, `list`, `set`, `zset`, `hash`, `stream`, `none`)。
キーのリネーム
RENAME <key> <newkey>
キーの名前を変更します。`newkey` が既に存在する場合、上書きされます。
キーのリネーム (上書き防止)
RENAMENX <key> <newkey>
キーの名前を変更します。`newkey` が既に存在する場合、操作は失敗します (0 を返す)。
キーの移動
MOVE <key> <db>
指定したキーを現在のデータベースから指定したデータベース (`db` インデックス) へ移動します。
有効期限設定 (秒)
EXPIRE <key> <seconds>
キーに有効期限を秒単位で設定します。
有効期限設定 (ミリ秒)
PEXPIRE <key> <milliseconds>
キーに有効期限をミリ秒単位で設定します。
有効期限設定 (Unixタイムスタンプ秒)
EXPIREAT <key> <timestamp>
キーに有効期限をUnixタイムスタンプ (秒) で指定します。
有効期限設定 (Unixタイムスタンプミリ秒)
PEXPIREAT <key> <milliseconds-timestamp>
キーに有効期限をUnixタイムスタンプ (ミリ秒) で指定します。
残り有効期限確認 (秒)
TTL <key>
キーの残り有効期限を秒単位で返します。有効期限がない場合は -1、キーが存在しない場合は -2 を返します。
残り有効期限確認 (ミリ秒)
PTTL <key>
キーの残り有効期限をミリ秒単位で返します。有効期限がない場合は -1、キーが存在しない場合は -2 を返します。
有効期限の解除 (永続化)
PERSIST <key>
キーの有効期限を解除し、永続化します。
ランダムなキー取得
RANDOMKEY
現在のデータベースからランダムにキー名を一つ返します。DBが空の場合は `nil` を返します。
キーのスキャン (イテレーション)
SCAN <cursor> [MATCH <pattern>] [COUNT <count>] [TYPE <type>]
データベース内のキーをインクリメンタルにイテレーションします。`cursor` は初回は 0 を指定し、次回の呼び出しでは前回の戻り値の最初の要素を使用します。`MATCH` でパターン、`COUNT` で一度に取得する目安の数を指定できます。`TYPE` で特定のデータ型のキーのみを対象にできます。`KEYS` と異なり、サーバーをブロックしません。

📜 String (文字列) 型

最も基本的なキーバリュー型の操作です。文字列や数値を扱います。

目的 コマンド例 説明
値の設定 (上書き)
SET <key> <value> [EX seconds | PX milliseconds | KEEPTTL] [NX | XX] [GET]
キーに値を設定します。オプションで有効期限(EX/PX)、既存キーのTTL維持(KEEPTTL)、存在しない場合のみ設定(NX)、存在する場合のみ設定(XX)、設定前の値を取得(GET)が指定できます。
値の設定 (存在しない場合)
SETNX <key> <value>
キーが存在しない場合のみ値を設定します。`SET key value NX` と同等です。ロックの実装などに利用されます。
値の設定 (有効期限付き 秒)
SETEX <key> <seconds> <value>
キーに値を設定し、同時に有効期限を秒単位で設定します。`SET key value EX seconds` と同等です。アトミックな操作です。
値の設定 (有効期限付き ミリ秒)
PSETEX <key> <milliseconds> <value>
キーに値を設定し、同時に有効期限をミリ秒単位で設定します。`SET key value PX milliseconds` と同等です。アトミックな操作です。
値の取得
GET <key>
指定したキーの値を取得します。キーが存在しない場合は `nil` を返します。
複数キーの値設定
MSET <key> <value> [<key> <value> ...]
複数のキーと値を一度に設定します。アトミックな操作です。
複数キーの値取得
MGET <key> [<key> ...]
複数のキーの値を一度に取得します。存在しないキーに対応する値は `nil` となります。
値の追記
APPEND <key> <value>
キーの値の末尾に指定した文字列を追記します。キーが存在しない場合は `SET` と同様の動作になります。追記後の文字列長を返します。
値の長さ取得
STRLEN <key>
キーの値の文字列長を返します。
値の一部取得
GETRANGE <key> <start> <end>
キーの値の指定した範囲の部分文字列を取得します。インデックスは 0 から始まり、負数は末尾からのオフセットを表します。
値の一部上書き
SETRANGE <key> <offset> <value>
キーの値の指定したオフセット位置から文字列を上書きします。必要に応じて文字列は拡張されます。変更後の文字列長を返します。
値のインクリメント (+1)
INCR <key>
キーの値を 1 増やします。値が数値でない場合や存在しない場合はエラーまたは 0 から開始します。インクリメント後の値を返します。アトミックな操作です。
値のデクリメント (-1)
DECR <key>
キーの値を 1 減らします。動作は `INCR` と同様です。
値のインクリメント (任意の値)
INCRBY <key> <increment>
キーの値を指定した `increment` だけ増やします。動作は `INCR` と同様です。
値のデクリメント (任意の値)
DECRBY <key> <decrement>
キーの値を指定した `decrement` だけ減らします。動作は `DECR` と同様です。
値の浮動小数点インクリメント
INCRBYFLOAT <key> <increment>
キーの値を浮動小数点数として指定した `increment` だけ増やします。インクリメント後の値を文字列で返します。
指定オフセットのビット取得
GETBIT <key> <offset>
文字列をビット配列とみなし、指定したオフセットのビット (0 or 1) を取得します。
指定オフセットのビット設定
SETBIT <key> <offset> <value>
文字列をビット配列とみなし、指定したオフセットのビットを `value` (0 or 1) に設定します。設定前のビット値を返します。
セットされたビット数カウント
BITCOUNT <key> [start end]
文字列内のセットされたビット (1) の数をカウントします。オプションで範囲 (バイト単位) を指定できます。
指定ビットの最初の出現位置検索
BITPOS <key> <bit> [start] [end]
文字列内で指定したビット (`bit` = 0 or 1) が最初に現れる位置 (ビットオフセット) を検索します。オプションで検索範囲 (バイト単位) を指定できます。
ビット単位演算
BITOP <operation> <destkey> <key> [<key> ...]
複数のキー間でビット単位の演算 (AND, OR, XOR, NOT) を行い、結果を `destkey` に保存します。`NOT` は1つのキーのみ指定します。

➡️ List (リスト) 型

順序付けられた文字列のコレクションです。キューやスタックとして利用できます。

目的 コマンド例 説明
左端に追加
LPUSH <key> <element> [<element> ...]
リストの左端(先頭)に一つまたは複数の要素を追加します。追加後のリストの長さを返します。
右端に追加
RPUSH <key> <element> [<element> ...]
リストの右端(末尾)に一つまたは複数の要素を追加します。追加後のリストの長さを返します。
左端に追加 (キー存在時のみ)
LPUSHX <key> <element> [<element> ...]
キーが存在し、それがリスト型の場合のみ、左端に要素を追加します。
右端に追加 (キー存在時のみ)
RPUSHX <key> <element> [<element> ...]
キーが存在し、それがリスト型の場合のみ、右端に要素を追加します。
左端から削除して取得
LPOP <key> [count]
リストの左端(先頭)から要素を削除し、その要素を返します。`count` を指定すると複数要素を削除して返します。リストが空の場合は `nil` を返します。
右端から削除して取得
RPOP <key> [count]
リストの右端(末尾)から要素を削除し、その要素を返します。`count` を指定すると複数要素を削除して返します。リストが空の場合は `nil` を返します。
指定要素を削除
LREM <key> <count> <element>
リストから指定した `element` と一致する要素を削除します。`count` > 0: 左から `count` 個削除。`count` < 0: 右から `|count|` 個削除。`count` = 0: 全て削除。削除した要素数を返します。
リストの長さ取得
LLEN <key>
リストの要素数を返します。
指定インデックスの要素取得
LINDEX <key> <index>
指定したインデックスの要素を取得します。インデックスは 0 から始まり、負数は末尾からのオフセットを表します。範囲外の場合は `nil` を返します。
指定要素の前後に挿入
LINSERT <key> <BEFORE|AFTER> <pivot> <element>
リスト内で `pivot` 要素を見つけ、その前 (`BEFORE`) または後 (`AFTER`) に `element` を挿入します。挿入後のリスト長を返します。`pivot` が見つからない場合は -1 を返します。
指定インデックスの要素設定
LSET <key> <index> <element>
指定したインデックスの要素を新しい `element` で上書きします。インデックスが範囲外の場合はエラーを返します。
指定範囲の要素取得
LRANGE <key> <start> <stop>
指定した範囲の要素をリストで取得します。インデックスは 0 から始まり、負数は末尾からのオフセットを表します。`LRANGE key 0 -1` で全要素を取得できます。
指定範囲以外の要素を削除
LTRIM <key> <start> <stop>
指定した範囲の要素 *のみ* を残し、それ以外の要素を全て削除します。
リスト間の要素移動
RPOPLPUSH <source> <destination>
`source` リストの右端から要素を削除し、その要素を `destination` リストの左端に追加します。移動した要素を返します。アトミックな操作です。信頼性の高いキューの実装などに使われます。
リスト間の要素移動 (ブロッキング)
BRPOPLPUSH <source> <destination> <timeout>
`RPOPLPUSH` のブロッキング版。`source` が空の場合、`timeout` 秒 (0 は無限) だけ要素が追加されるのを待ちます。タイムアウトした場合は `nil` を返します。
左端から取得 (ブロッキング)
BLPOP <key> [<key> ...] <timeout>
複数のリストの左端から要素を削除して取得します。最初に要素が見つかったリストから取得します。どのリストも空の場合、`timeout` 秒 (0 は無限) だけ要素が追加されるのを待ちます。取得したキーと要素を返します。
右端から取得 (ブロッキング)
BRPOP <key> [<key> ...] <timeout>
`BLPOP` の右端バージョン。複数のリストの右端から要素を削除して取得します。

🧊 Set (セット) 型

順序のない、ユニークな文字列のコレクションです。タグ付けや共通の要素の検索などに利用できます。

目的 コマンド例 説明
要素の追加
SADD <key> <member> [<member> ...]
セットに一つまたは複数の要素を追加します。既に存在する要素は無視されます。実際に追加された要素数を返します。
要素の削除
SREM <key> <member> [<member> ...]
セットから一つまたは複数の要素を削除します。実際に削除された要素数を返します。
要素の存在確認
SISMEMBER <key> <member>
指定した要素がセットに存在するか確認します。存在すれば 1、しなければ 0 を返します。
全要素取得
SMEMBERS <key>
セット内の全ての要素を取得します。順序は保証されません。
要素数取得
SCARD <key>
セットの要素数を返します。
ランダムな要素取得
SRANDMEMBER <key> [count]
セットからランダムに要素を取得します。`count` が正の場合、重複しない要素を `count` 個返します。`count` が負の場合、重複を許して `|count|` 個返します。要素は削除されません。
ランダムな要素削除して取得
SPOP <key> [count]
セットからランダムに要素を削除し、その要素を返します。`count` を指定すると `count` 個の要素を削除して返します。
セット間の要素移動
SMOVE <source> <destination> <member>
`source` セットから `member` を削除し、`destination` セットに追加します。移動が成功すれば 1、`member` が `source` に存在しなければ 0 を返します。アトミックな操作です。
和集合
SUNION <key> [<key> ...]
指定した複数のセットの和集合 (含まれる全ての要素) を返します。
和集合を保存
SUNIONSTORE <destination> <key> [<key> ...]
指定した複数のセットの和集合を計算し、結果を `destination` キーに保存します。結果セットの要素数を返します。
積集合
SINTER <key> [<key> ...]
指定した複数のセットの積集合 (全てのセットに共通して含まれる要素) を返します。
積集合を保存
SINTERSTORE <destination> <key> [<key> ...]
指定した複数のセットの積集合を計算し、結果を `destination` キーに保存します。結果セットの要素数を返します。
差集合
SDIFF <key> [<key> ...]
最初のセットから、後続のセットに含まれる要素を取り除いた差集合を返します。
差集合を保存
SDIFFSTORE <destination> <key> [<key> ...]
最初のセットから、後続のセットに含まれる要素を取り除いた差集合を計算し、結果を `destination` キーに保存します。結果セットの要素数を返します。
セットのスキャン
SSCAN <key> <cursor> [MATCH <pattern>] [COUNT <count>]
セット内の要素をインクリメンタルにイテレーションします。`KEYS` や `SMEMBERS` と異なり、サーバーをブロックしません。基本的な使い方は `SCAN` と同様です。

📈 Sorted Set (ソート済みセット) 型

各要素にスコア (数値) が関連付けられた、ユニークな文字列のコレクションです。スコアに基づいて順序付けられます。ランキングや優先度付きキューなどに利用できます。

目的 コマンド例 説明
要素の追加/更新
ZADD <key> [NX|XX] [CH] [INCR] <score> <member> [<score> <member> ...]
ソート済みセットに一つまたは複数の要素を追加、または既存要素のスコアを更新します。
`NX`: 新規要素のみ追加 (更新しない)。`XX`: 既存要素のみ更新 (追加しない)。
`CH`: 変更された要素数 (追加または更新された要素数) を返す (デフォルトは追加された要素数)。
`INCR`: スコアを加算する (`ZINCRBY` の複数要素版)。
要素の削除
ZREM <key> <member> [<member> ...]
ソート済みセットから一つまたは複数の要素を削除します。削除された要素数を返します。
スコア取得
ZSCORE <key> <member>
指定した要素のスコアを返します。要素が存在しない場合は `nil` を返します。
スコア加算
ZINCRBY <key> <increment> <member>
指定した要素のスコアに `increment` を加算します。要素が存在しない場合はスコア `increment` で追加されます。加算後のスコアを返します。アトミックな操作です。
要素数取得
ZCARD <key>
ソート済みセットの要素数を返します。
指定スコア範囲の要素数取得
ZCOUNT <key> <min> <max>
指定したスコア範囲 (`min` <= score <= `max`) に含まれる要素の数を返します。範囲の境界を含めるかどうかは `(` を使うことで制御できます (例: `(1 5` は 1 < score <= 5)。
指定インデックス範囲の要素取得 (昇順)
ZRANGE <key> <start> <stop> [WITHSCORES]
スコアの昇順で、指定したインデックス範囲の要素を取得します。`WITHSCORES` を付けるとスコアも一緒に返します。
指定インデックス範囲の要素取得 (降順)
ZREVRANGE <key> <start> <stop> [WITHSCORES]
スコアの降順で、指定したインデックス範囲の要素を取得します。`WITHSCORES` を付けるとスコアも一緒に返します。
指定スコア範囲の要素取得 (昇順)
ZRANGEBYSCORE <key> <min> <max> [WITHSCORES] [LIMIT offset count]
指定したスコア範囲 (`min` <= score <= `max`) の要素をスコアの昇順で取得します。`WITHSCORES` でスコアも取得。`LIMIT` で取得結果のオフセットと件数を指定できます。
指定スコア範囲の要素取得 (降順)
ZREVRANGEBYSCORE <key> <max> <min> [WITHSCORES] [LIMIT offset count]
指定したスコア範囲 (`min` <= score <= `max`) の要素をスコアの降順で取得します。`max` と `min` の順序に注意。オプションは `ZRANGEBYSCORE` と同様です。
指定インデックス範囲の要素削除
ZREMRANGEBYRANK <key> <start> <stop>
スコアの昇順で、指定したインデックス範囲の要素を削除します。削除した要素数を返します。
指定スコア範囲の要素削除
ZREMRANGEBYSCORE <key> <min> <max>
指定したスコア範囲 (`min` <= score <= `max`) の要素を削除します。削除した要素数を返します。
要素のインデックス取得 (昇順)
ZRANK <key> <member>
指定した要素のスコア昇順でのインデックス (0-based rank) を返します。要素が存在しない場合は `nil` を返します。
要素のインデックス取得 (降順)
ZREVRANK <key> <member>
指定した要素のスコア降順でのインデックス (0-based rank) を返します。要素が存在しない場合は `nil` を返します。
辞書順範囲の要素取得
ZRANGEBYLEX <key> <min> <max> [LIMIT offset count]
スコアが全て同じ場合に、要素を辞書順でソートし、指定した範囲 (`min` から `max` まで) の要素を取得します。範囲指定には `[` (含む), `(` (含まない) を使います。`-` と `+` は無限小/無限大を表します。例: `ZRANGEBYLEX myzset [a (c` は “a” で始まり “c” より小さい要素を取得。
辞書順範囲の要素取得 (逆順)
ZREVRANGEBYLEX <key> <max> <min> [LIMIT offset count]
`ZRANGEBYLEX` の逆順バージョン。`max` と `min` の順序に注意。
辞書順範囲の要素削除
ZREMRANGEBYLEX <key> <min> <max>
辞書順で指定した範囲の要素を削除します。削除した要素数を返します。
辞書順範囲の要素数カウント
ZLEXCOUNT <key> <min> <max>
辞書順で指定した範囲に含まれる要素の数を返します。
ソート済みセットのスキャン
ZSCAN <key> <cursor> [MATCH <pattern>] [COUNT <count>]
ソート済みセット内の要素 (とスコア) をインクリメンタルにイテレーションします。基本的な使い方は `SCAN` と同様です。
和集合/積集合を保存
ZUNIONSTORE|ZINTERSTORE <destination> <numkeys> <key> [<key> ...] [WEIGHTS <weight> [...]] [AGGREGATE SUM|MIN|MAX]
複数のソート済みセットの和集合 (`ZUNIONSTORE`) または積集合 (`ZINTERSTORE`) を計算し、`destination` に保存します。
`numkeys`: 入力キーの数。
`WEIGHTS`: 各入力セットのスコアに乗算する重み。
`AGGREGATE`: 同じ要素が存在する場合のスコア集計方法 (デフォルトは SUM)。

🗺️ Hash (ハッシュ) 型

フィールドと値のペアを格納するデータ構造です。オブジェクトの表現などに適しています。

目的 コマンド例 説明
フィールドと値の設定
HSET <key> <field> <value> [<field> <value> ...]
ハッシュに一つまたは複数のフィールドと値のペアを設定します。フィールドが既に存在する場合は値が上書きされます。新しく追加されたフィールド数を返します。
フィールドと値の設定 (存在しない場合)
HSETNX <key> <field> <value>
指定したフィールドが存在しない場合のみ、フィールドと値を設定します。設定された場合は 1、フィールドが既に存在した場合は 0 を返します。
複数フィールドと値の設定 (非推奨)
HMSET <key> <field> <value> [<field> <value> ...]
複数のフィールドと値を一度に設定します。(Redis 4.0.0以降は `HSET` が複数ペアに対応したため非推奨)
フィールドの値取得
HGET <key> <field>
指定したフィールドの値を取得します。フィールドまたはキーが存在しない場合は `nil` を返します。
複数フィールドの値取得
HMGET <key> <field> [<field> ...]
複数のフィールドの値を一度に取得します。存在しないフィールドに対応する値は `nil` となります。
全フィールドと値取得
HGETALL <key>
ハッシュ内の全てのフィールドと値のペアを取得します。フィールドと値が交互にリスト形式で返されます。
フィールド存在確認
HEXISTS <key> <field>
指定したフィールドがハッシュ内に存在するか確認します。存在すれば 1、しなければ 0 を返します。
フィールド削除
HDEL <key> <field> [<field> ...]
ハッシュから一つまたは複数のフィールドを削除します。削除されたフィールド数を返します。
フィールド数取得
HLEN <key>
ハッシュ内のフィールド数を返します。
全フィールド名取得
HKEYS <key>
ハッシュ内の全てのフィールド名を取得します。
全値取得
HVALS <key>
ハッシュ内の全ての値を取得します。
フィールド値のインクリメント (整数)
HINCRBY <key> <field> <increment>
指定したフィールドの値を整数として `increment` だけ増やします。フィールドが存在しない場合は 0 から開始します。インクリメント後の値を返します。アトミックな操作です。
フィールド値のインクリメント (浮動小数点)
HINCRBYFLOAT <key> <field> <increment>
指定したフィールドの値を浮動小数点数として `increment` だけ増やします。フィールドが存在しない場合は 0 から開始します。インクリメント後の値を文字列で返します。アトミックな操作です。
フィールド値の長さ取得
HSTRLEN <key> <field>
指定したフィールドの値の文字列長を返します。フィールドが存在しない場合は 0 を返します。
ハッシュのスキャン
HSCAN <key> <cursor> [MATCH <pattern>] [COUNT <count>]
ハッシュ内のフィールドと値をインクリメンタルにイテレーションします。基本的な使い方は `SCAN` と同様です。

📡 Pub/Sub (出版/購読)

メッセージングパターンを実現する機能です。発行者 (Publisher) がチャンネルにメッセージを送ると、購読者 (Subscriber) が受け取ります。

`SUBSCRIBE`, `PSUBSCRIBE` を実行すると、クライアントは購読モードに入り、他のコマンド (購読解除系と PING/QUIT を除く) を受け付けなくなります。別のクライアント接続から `PUBLISH` などを実行してください。
目的 コマンド例 説明
チャンネル購読
SUBSCRIBE <channel> [<channel> ...]
指定したチャンネルを購読します。メッセージを受信すると、クライアントに通知されます。
パターンによるチャンネル購読
PSUBSCRIBE <pattern> [<pattern> ...]
指定したパターンに一致するチャンネルを購読します。`*` や `?` などのグロブ形式パターンが使用可能です。例: `PSUBSCRIBE news.*`
チャンネル購読解除
UNSUBSCRIBE [<channel> ...]
指定したチャンネルの購読を解除します。チャンネルを指定しない場合は、購読中の全てのチャンネルを解除します。
パターンによる購読解除
PUNSUBSCRIBE [<pattern> ...]
指定したパターンの購読を解除します。パターンを指定しない場合は、購読中の全てのパターンを解除します。
メッセージ発行
PUBLISH <channel> <message>
指定したチャンネルにメッセージを発行します。メッセージを受け取った購読者の数を返します。
アクティブなチャンネル一覧
PUBSUB CHANNELS 
現在、少なくとも1人以上の購読者がいるアクティブなチャンネルの一覧を返します。`pattern` を指定すると一致するチャンネルのみ返します。
指定チャンネルの購読者数
PUBSUB NUMSUB [<channel> ...]
指定したチャンネルの購読者数を返します。チャンネル名を指定しない場合は空のリストを返します。
サーバー全体の購読パターン数
PUBSUB NUMPAT
現在購読されているパターンの総数を返します。

🧱 トランザクション

複数のコマンドをアトミックな操作としてまとめる機能です。一連のコマンドが中断されることなく実行されることを保証します。

目的 コマンド例 説明
トランザクション開始
MULTI
トランザクションブロックを開始します。これ以降に実行されたコマンドはキューイングされます。
コマンドキューイング
... (任意のコマンド) ...
`MULTI` 後、`EXEC` または `DISCARD` が実行されるまで、コマンドはキューに追加されます。各コマンドに対して `QUEUED` が返されます。
トランザクション実行
EXEC
キューイングされた全てのコマンドをアトミックに実行します。各コマンドの結果が順に返されます。
トランザクション破棄
DISCARD
トランザクションを破棄し、キューイングされた全てのコマンドをキャンセルします。
キーの監視 (CAS)
WATCH <key> [<key> ...]
`MULTI` を実行する前に、指定したキーを監視します。`EXEC` が実行される前に監視対象のキーが他のクライアントによって変更された場合、トランザクションは失敗し (`EXEC` が `nil` を返す)、コマンドは実行されません。Check-and-Set (CAS) 操作を実現します。
キーの監視解除
UNWATCH
`WATCH` で設定した全てのキーの監視を解除します。`EXEC` または `DISCARD` の実行時にも自動的に解除されます。

📜 スクリプティング (Lua)

Luaスクリプトをサーバーサイドで実行する機能です。複雑な処理や複数のコマンドをアトミックに実行できます。

目的 コマンド例 説明
スクリプト実行
EVAL <script> <numkeys> <key> [<key> ...] <arg> [<arg> ...]
Luaスクリプトをサーバーサイドで実行します。
`script`: 実行するLuaスクリプト文字列。
`numkeys`: スクリプト内で `KEYS[i]` としてアクセスするキー名の数。
`key …`: キー名。
`arg …`: スクリプト内で `ARGV[i]` としてアクセスする引数。
キャッシュされたスクリプト実行
EVALSHA <sha1> <numkeys> <key> [<key> ...] <arg> [<arg> ...]
`SCRIPT LOAD` でキャッシュされたスクリプトを、そのSHA1ダイジェストを指定して実行します。ネットワーク帯域を節約できます。
スクリプト存在確認
SCRIPT EXISTS <sha1> [<sha1> ...]
指定したSHA1ダイジェストを持つスクリプトがキャッシュに存在するか確認します。存在するSHA1ごとに 1、存在しない場合は 0 を含むリストを返します。
スクリプトをキャッシュにロード
SCRIPT LOAD <script>
Luaスクリプトをサーバーのキャッシュにロードします。実行はされません。ロードされたスクリプトのSHA1ダイジェストを返します。
スクリプトキャッシュ削除
SCRIPT FLUSH
サーバーのLuaスクリプトキャッシュを全て削除します。
実行中のスクリプト停止
SCRIPT KILL
現在実行中のLuaスクリプトを停止しようと試みます。ただし、書き込み操作を行っていない読み取り専用のスクリプトのみ停止可能です。

🛠️ その他

パイプライン、Slow Log、Monitorなど、便利な補助機能です。

目的 コマンド例 説明
パイプライン
# 例: Linux/macOS の場合
(printf "PING\r\nSET key value\r\nGET key\r\nINCR counter\r\n"; sleep 1) | redis-cli --pipe
複数のコマンドをまとめてサーバーに送信し、一度にレスポンスを受け取る方法です。コマンドごとにネットワークラウンドトリップが発生しないため、大量のコマンドを高速に実行できます。`redis-cli –pipe` モードを使用するか、クライアントライブラリのパイプライン機能を利用します。
Slow Log 取得
SLOWLOG GET [count]
設定された閾値よりも実行時間が長かったコマンドのログを取得します。`count` で取得件数を指定できます。各ログには、ユニークID、実行タイムスタンプ、実行時間 (マイクロ秒)、実行されたコマンドと引数が含まれます。
Slow Log 件数取得
SLOWLOG LEN
Slow Log に記録されているログの件数を返します。
Slow Log リセット
SLOWLOG RESET
Slow Log をリセット(空に)します。
コマンド監視
MONITOR
サーバーが受け取った全てのコマンドをリアルタイムで表示します。デバッグやサーバーの動作確認に役立ちます。パフォーマンスに影響を与える可能性があるため、本番環境での長時間の使用は避けてください。Ctrl+C で終了します。

コメント

タイトルとURLをコピーしました