Redis PSUBSCRIBEコマンド徹底解説 – Pub/Subで複数パターンを購読する方法
このチュートリアルでは、Redisのメッセージブローカー(Pub/Sub)システムにおいて、redis-cliを使って複数のパターンを同時にサブスクライブ(購読)する方法を解説します。
PSUBSCRIBEコマンドとは
PSUBSCRIBEコマンドは、クライアントを1つ以上のパターンに登録し、指定されたパターンに名前が一致するチャンネルへパブリッシュされたすべてのメッセージを受信するためのコマンドです。パターンはglobスタイルで指定します。
SUBSCRIBEコマンドと同様に、クライアントがPSUBSCRIBEを実行すると「サブスクライブ状態」に入り、購読中のパターンを待ち受けます。他のクライアントが、購読中のいずれかのパターンに一致するチャンネルへメッセージをパブリッシュすると、Redisがそのメッセージを自動的にクライアントへプッシュします。
サブスクライブ状態での制限
クライアントがサブスクライブ状態にある間は、SUBSCRIBE、PSUBSCRIBE、UNSUBSCRIBE、PUNSUBSCRIBE、PING、QUIT以外のコマンドを実行できません。redis-cliの場合、一度サブスクライブ状態に入ると他のコマンドは受け付けなくなり、Ctrl + Cでしか状態を抜けられない点に注意してください。
Globスタイルのパターン指定方法
- * (アスタリスク): 空白文字を含む0文字以上の任意の文字列に一致します。例:
foo*はfooccc、foo、fooqなどにマッチします。 - ? (クエスチョンマーク): 空白文字を含む任意の1文字に一致します。例:
f?oはfao、fbo、fcoなどにマッチします。 - [list] (角括弧): リスト内のいずれか1文字に一致します。例:
f[abc]oはfao、fbo、fcoにマッチします。
特殊文字をエスケープしたい場合は、バックスラッシュ \ を使用します。
PSUBSCRIBEコマンドの構文
redis host:port> PSUBSCRIBE <pattern> [ <pattern> ]
複数のパターンをスペースで区切って指定することで、1回のコマンド実行でまとめて購読できます。
レスポンス形式
- PSUBSCRIBEコマンド実行時:3要素の配列(array)が返されます。
- メッセージを受信したとき:4要素の配列(array)が返されます。
プッシュされるメッセージの形式
配列レスポンスの最初の要素には、以下の種類があります。
- psubscribe(3要素): パターンの購読に成功したことを示します。2番目の要素は購読したパターン、3番目の要素は現在購読中のパターンの総数です。
- pmessage(4要素): 他のクライアントが発行したPUBLISHコマンドによって受信したメッセージです。2番目の要素は一致した元のパターン、3番目の要素は送信元チャンネル名、4番目の要素は実際のメッセージ本文です。
実行例

参考資料
- PSUBSCRIBEコマンド公式ドキュメント
以上が、redis-cliとPSUBSCRIBEコマンドを使って、RedisのPub/Subで1つ以上のパターンを購読する方法でした。この記事が役に立った場合は、ぜひコメントで感想を共有したり、他の方にもシェアしてください。
-
Redis GEOPOSコマンドの使い方 – 地理空間データからメンバーの経度・緯度を取得する方法
このチュートリアルでは、Redisに保存された地理空間値(ジオ空間データ)から、1つまたは複数のメンバーの経度・緯度を取得する方法を解説します。この操作には、RedisのGEOPOSコマンドを使用します。 GEOPOSコマンドとは GEOPOSコマンドは、キーに保存された地理空間値(ソート済みセット)の中から、指定した1つ以上のメンバーの経度・緯度を返すためのコマンドです。 GEOADDコマンドで座標(経度・緯度)を地理空間値に挿入する際、それらの値は52ビットのGeohashに変換されます。そのため、GEOPOSで取得される座標は、挿入時に入力した値と完全に一致するとは限らず、わずかな誤差が
-
JedisライブラリでRedisのPub/Subシステムを実装する方法【Javaサンプルコード付き】
このチュートリアルでは、Java向けクライアントライブラリ「Jedis」を使用して、RedisのPub/Sub(パブリッシュ/サブスクライブ)システムを実装する方法を解説します。 Jedisライブラリとは Jedisは、Redisデータストア用のJavaクライアントライブラリです。軽量で非常に扱いやすく、Redis 2.8.x、3.x.x以降のバージョンと完全な互換性があります。シンプルなAPI设计で、Redisの各種コマンドを直感的に操作できるのが特徴です。 RedisのPub/Subシステムとは Redisは、Publish/Subscribe(パブリッシュ/サブスクライブ)型のメッセージ