【入門編】 Pub/Subコマンド群 – Redis

やあ。Redisの世界へようこそ。
アーキテクチャの深淵を覗く前に、まずは「Redisの心臓部」とも言えるコミュニケーション機能、Pub/Sub(パブリッシュ・サブスクライブ)について話をしよう。

多くのエンジニアがRedisを「ただの高速な辞書(KVS)」だと思っているけれど、それは半分しか正解じゃない。Redisは、「情報のリアルタイムな交通整理」においても無類の才能を発揮するんだ。

今回は、難しい理論は一旦置いておいて、この仕組みの本質を紐解いていこう。

—

1. Pub/Subを「町内会の放送」でイメージしてみよう

Pub/Subを理解するのに、一番わかりやすい例え話がある。それは「町内会のスピーカー放送」だ。

  • PUBLISH(パブリッシャー): 放送室でマイクに向かって話す人。
  • SUBSCRIBE(サブスクライバー): スピーカーの前に立って、放送を今か今かと待ち構えている人。
  • チャンネル: 「防災情報」「娯楽情報」といった、放送の周波数。

RedisのPub/Subもこれと全く同じだ。
誰かが特定の「チャンネル」に情報を投げると、そのチャンネルを「購読(SUBSCRIBE)」している全員の耳に、瞬時にその情報が届く。「誰に届くか」を細かく指定する必要はない。ただ情報を投げれば、あとはRedisが勝手に「待ち構えている人」全員に届けてくれるんだ。

—

2. 基本のコマンドを触ってみる

実際に動かすときは、2つのターミナル(画面)を開いてみてくれ。一方が「聞き手」、もう一方が「話し手」だ。

聞き手(サブスクライバー)の準備

まずは聞き手が、特定のチャンネル(例: `news`)に耳を澄ませる。

‘news’というチャンネルを購読する
SUBSCRIBE news

出力例:
1) “subscribe”
2) “news”
3) (integer) 1
この状態で、聞き手は他のコマンドを受け付けず、ひたすら待機する。

話し手(パブリッシャー)から情報を投げる

別のターミナルから、同じチャンネルにメッセージを投げよう。

‘news’というチャンネルにメッセージを送る
PUBLISH news “Hello, Redis!”

出力例:
(integer) 1 <-- 1人に届いたよ、という意味 この瞬間、聞き手の画面には `Hello, Redis!` という文字がパッと表示されるはずだ。これがRedisのリアルタイム性の正体だよ。 ---

3. もう一歩先へ:ワイルドカードでまとめて聞く

もし、「ニュース」だけでなく「スポーツ」「天気」など、似たような情報をまとめて受け取りたい場合はどうする? 毎回全部を `SUBSCRIBE` するのは面倒だよね。

ここで登場するのが `PSUBSCRIBE`(パターン購読) だ。

‘news.’ にマッチするすべてのチャンネルをまとめて購読する
PSUBSCRIBE news.

これで ‘news.sport’, ‘news.weather’ など、
‘news.’ で始まるチャンネルの情報を全部拾えるようになる。

「ワイルドカード」という魔法を使うことで、個別に指定しなくても、関心のある情報をまるごと手に入れられる。これがRedisの粋なところさ。

—

4. 伝説のアーキテクトからの「知恵袋」

ここからは少しだけ、初心者の君に知っておいてほしい「本質的な注意点」を話すよ。

1. 「記録」は残らない:
Pub/Subは「その場限りの放送」だ。もし、スピーカーの前に誰もいなかったら? その情報は空中に消えて、二度と手に入らない。「届かなかったデータを後から読み返したい」なら、Pub/Subではなく、Redisの「Streams」という別の機能を使うべきなんだ。 使い分けがエンジニアの腕の見せ所だよ。

2. 速度は光速に近い:
RedisのPub/Subはメモリ上で完結する。だから、数ミリ秒という世界でメッセージが飛び交う。大規模なチャットアプリや、リアルタイムの株価通知にはもってこいの機能だね。

3. コマンドの終了:
`UNSUBSCRIBE` を使えば、いつでも放送を聞くのをやめられる。シンプルだけど、リソースを適切に解放するのはプロの基本だ。忘れないでおこう。

—

まとめ:君はもう、Redisの通信網を操れる

Pub/Subは、システム同士を「疎結合(お互いに依存しすぎない状態)」にするための強力な武器だ。これさえ押さえておけば、君が作るアプリケーションは、より柔軟で、より速く、そしてよりモダンな構造に進化するはずだよ。

まずは自分の手で `SUBSCRIBE` して、`PUBLISH` してみる。その瞬間に、画面越しにデータが飛んでいく感覚を味わってみてほしい。それが、エンジニアとしての確かな一歩目になる。

ここをクリアすれば、Redisの基本はバッチリマスターできたと言っていい。
次は、さらに深い「データ構造の魔法」について語り合おうじゃないか。準備はいいかい?

コメント

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