RedisのPUBSUBコマンド

表題の通り。先日のエントリで『RedisのPUBSUBコマンドは後から追加されている』という事を書いた。実際にどういう結果を得られるのか確認してみる。

■ 環境

  • Redis 3.0.0
  • CentOS 6.4

■ HELPを確認

HELPコマンドで確認してみる。

127.0.0.1:6379> HELP PUBSUB

  PUBSUB subcommand [argument [argument ...]]
  summary: Inspect the state of the Pub/Sub subsystem
  since: 2.8.0
  group: pubsub

127.0.0.1:6379>

これだけではよくわからない。”subcommand“には何が指定できるのか?これより詳細なHELPを確認したいのだが方法がわからないので公式ページのマニュアルを参照する。

■ subcommand

PUBSUBコマンドの”subcommand”に指定できるのは下記の3つのようである。

  • CHANNELS
  • NUMSUB
  • NUMPAT

それぞれ確認してみる。

■ CHANNELS

PUBSUB  CHANNELS  [pattern]

チャンネルの一覧を取得することができる。サブコマンドの名称からもイメージが付きやすいだろう。別のターミナルでSUBSCRIBEコマンドを使用してチャンネルを登録した後に実行してみると下記のような結果になる。

127.0.0.1:6379> pubsub channels
1) "test"
127.0.0.1:6379>

test“チャンネルが存在している事がわかる。”pattern“でも出来るとの事なので試してみる。

127.0.0.1:6379> pubsub channels t*
1) "test"
127.0.0.1:6379>

pattern“に一致するチャンネルが全て取得できるようだ。ちなみにチャンネルが一つも存在しない状態で試してみると下記のような結果となる。

127.0.0.1:6379> pubsub channels
(empty list or set)
127.0.0.1:6379>

ここからもオンラインでのPub/Subとしてのみ使用可能だという事がわかるであろう。

■ NUMSUB

PUBSUB  NUMSUB  [channel-1 ... channel-N]

指定したチャンネルを登録(SUBSCRIBE)しているクライアントの数を取得できる。

127.0.0.1:6379> pubsub numsub test test2
1) "test"
2) (integer) 1
3) "test2"
4) (integer) 0
127.0.0.1:6379>

test“チャンネルを登録しているクライアントは”1“、”test2“チャンネルを登録しているクライアントは”0“である事がわかる。

■ NUMPAT

PUBSUB  NUMPAT

いくつの”pattern“が登録されているかを取得する事ができる。まずは登録側は下記のようにPSUBSCRIBEコマンドで登録してみている。

127.0.0.1:6379> psubscribe test* aha*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "test*"
3) (integer) 1
1) "psubscribe"
2) "aha*"
3) (integer) 2

上記のように2つの”pattern“を登録してみたところ、下記のような結果を得る事ができた。

127.0.0.1:6379> pubsub numpat
(integer) 2
127.0.0.1:6379>

pattern“数はわかるが、実際にどういった”pattern“が登録されているかはわからないようである。少々コマンドとしては微妙な感じがしなくもない。

以上。

■ 関連

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください