【入門編】 PUNSUBSCRIBEコマンド – Redis

こんにちは! Redisの奥深い世界へようこそ。
今日は、Pub/Sub(パブリッシュ・サブスクライブ)という機能のなかでも、少しユニークな「PUNSUBSCRIBE(パン・アンサブスクライブ)」というコマンドについてお話しします。

「名前が呪文みたいで難しそう……」なんて思いましたか? 大丈夫です。今日ここで、日常の身近な例えを交えながら、誰よりも分かりやすく解きほぐしていきますね。

ここをクリアすれば、Redisのメッセージングの仕組みがグッと身近になりますよ。一緒にバッチリマスターしていきましょう!

—

1. そもそも Redis の「Pub/Sub」ってなに?

難しく考える必要はありません。RedisのPub/Sub機能は、まるで「回覧板」や「新聞の配達システム」のようなものです。

  • Publisher(パブリッシャー / 発行人): 情報を発信する人(例:ニュースの編集部)
  • Subscriber(サブスクライバー / 購読者): 情報を受け取る人(例:新聞の読者)

誰かが「新しいニュースが出たよ!」と叫ぶと、それを聞いて(購読して)いる人たち全員に一瞬で情報が届く仕組みになっています。

通常の「お名前指定」の購読と、パターン指定の違い

普通は、「スポーツニュース」「天気予報」という風に、チャンネル名をピシャリと指定して購読します(`SUBSCRIBE`コマンド)。

しかし、Redisには「ワイルドカード(あいまい検索)」を使って、まとめて複数のチャンネルを購読する仕組みがあります。それが `PSUBSCRIBE`(ピー・サブスクライブ) です。

例えば、`news.` というパターンで購読すると、「`news.sports`」「`news.weather`」「`news.economy`」など、`news.`から始まるチャンネルの情報を一網打尽で受け取ることができます。便利ですよね。

—

2. 本日の主役:`PUNSUBSCRIBE` とは?

さて、ここで本日のテーマである `PUNSUBSCRIBE` の登場です。

先ほどの新聞配達の例えで言うと、「やっぱり `news.`(ニュース全般)の配達、もうストップして!」と、まとめて契約を解除するためのコマンドがこれです。

  • Pattern(パターン)の
  • UNSUBSCRIBE(アンサブスクライブ / 購読解除)

文字通り、パターン指定で行っていた購読を「やめる」ための命令というわけです。

—

3. 具体的な使い方とルール

実際にコード(コマンド)がどう動くのかを見てみましょう。
優しく丁寧にコメントを入れたので、雰囲気を掴んでくださいね。

ステップ1:パターンを指定して購読する(PSUBSCRIBE)

まずは、「`news.` に当てはまるチャンネル全部のニュースをちょうだい!」と頼みます。

news. で始まるすべてのチャンネルをまとめて購読する
PSUBSCRIBE news.

実行結果(イメージ)
1) “psubscribe” # パターン購読を開始したよという合図
2) “news.” # 登録したパターン
3) (integer) 1 # 現在、いくつパターンを購読しているかの数

これで、`news.sports` でも `news.technology` でも、`news.`さえついていれば何でも受け取れる状態になりました。

ステップ2:パターン指定の購読を解除する(PUNSUBSCRIBE)

しばらくニュースを読んだので、もう購読を終わりにしたいとします。ここで `PUNSUBSCRIBE` の出番です。

先ほど登録した pattern 「news.」の購読を解除する
PUNSUBSCRIBE news.

実行結果(イメージ)
1) “punsubscribe” # パターン購読を解除したよという合図
2) “news.” # 解除されたパターン
3) (integer) 0 # 残りのパターン購読数(これでゼロになりました)

💡 ちょっとした注意点(ここがポイント!)

もし何も引数(ターゲットのパターン)を渡さずに、ただ `PUNSUBSCRIBE` とだけ打つとどうなるでしょうか?
正解は、「自分が今、パターンの仕組みで購読しているものを『すべて』まとめて解除する」となります。
大掃除をしたい時には便利ですが、一部だけをやめたいときは必ず `news.` のようにパターン名を後ろに書きましょう。

—

4. 知っておくとちょっとカッコいい「パターンのルール」

Redisのパターンマッチングでは、いくつかの便利な記号(ワイルドカード)が使えます。

1. “ (アステリスク)

  • 「ゼロ文字以上のどんな文字でもOK!」という意味です。
  • 例:`news.` なら `news.` の後に何が来てもヒットします。

2. `?` (クエスチョンマーク)

  • 「任意の1文字」を表します。
  • 例:`h?llo` なら `hello` も `hallo` もヒットします。

3. `[…]` (ブラケット)

  • 「この中のどれか1文字」を指定します。
  • 例:`h[ae]llo` なら `hello` と `hallo` はヒットしますが、`hillo` はヒットしません。

`PUNSUBSCRIBE` で解除するときは、「自分が `PSUBSCRIBE` したときと同じ文字(パターン)」を正確に指定してあげるのが、トラブルを防ぐ一番のコツです。

—

まとめ

いかがでしたでしょうか?
`PUNSUBSCRIBE` は、一言で言えば「あいまい指定(パターン)でまとめて行っていたニュースの定期購読を、バサッと解約するコマンド」です。

  • `PSUBSCRIBE` でまとめて受け取る仕組みを作り、
  • 要らなくなったら `PUNSUBSCRIBE` で綺麗に片付ける。

このセットを覚えておくだけで、Redisを使ったリアルタイムなメッセージングの制御がグッとスムーズになります。

ここをクリアできれば、RedisのPub/Subの基本はもうバッチリマスターです!自信を持って次のステップに進んでくださいね。あなたのエンジニアライフを、心から応援しています!

コメント

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