XREADGROUP

Redis 開発者教育の申込 Redis 定期点検/技術サポート
Redis Technical Support
Redis エンタープライズサーバー
Redis Enterprise Server

コンシューマーグループでデータを読む

使い方は XREADGROUP GROUP group consumer count 1 STREAMS key id-or-> です。
最後の引数である ID は、一般的に特定 id ではなく特別な id である '>' を使います。 そうするとコマンド実行のたびに次のデータを読みます。

Example

コマンド>XREADGROUP GROUP CG-A C1 count 1 STREAMS sensor-1234 >
結果>1) 1) "sensor-1234"
    2) 1) 1) 1538319053569-0
            2) 1) "temperature"
                2) "98.7"
コマンド>XREADGROUP GROUP CG-A C1 count 1 STREAMS sensor-1234 >
結果>1) 1) "sensor-1234"
    2) 1) 1) 1538319053569-1
            2) 1) "temperature"
                2) "98.8"

XREADGROUP コマンドでデータを読んで処理した後は、必ず XACK で処理完了を通知する必要があります。

BLOCK オプション

BLOCK オプションを使うとデータがない場合、指定した時間(ミリ秒)の間データが入るのを待ってから読みます。

  • XREADGROUP GROUP group consumer count 1 BLOCK 1000 STREAMS key >

XREAD で BLOCK オプションを使う場合は最初だけ '$' を使いますが、ここではずっと '>' を使います。

ストリーム1つに複数コンシューマーを割り当てる

複数のコンシューマーが交代でストリーム1つのデータを処理できます。 1つのストリームで処理するデータが多く処理時間が長い場合、コンシューマー(consumer)を複数指定できます。

  • XREADGROUP GROUP CG-A Consumer-1 count 1 STREAMS sensor-1234  >
    結果: temperature 100
  • XREADGROUP GROUP CG-A Consumer-2 count 1 STREAMS sensor-1234  >
    結果: temperature 101
  • XREADGROUP GROUP CG-A Consumer-3 count 1 STREAMS sensor-1234  >
    結果: temperature 102

ストリームを複数指定する

複数のストリームからデータを読めます。

  • XREADGROUP GROUP CG-A Consumer-1 count 1 STREAMS sensor-1234 sensor-5678  > >

この場合 count 1 は各ストリームから1件ずつデータを読みます。


構文

XREADGROUP GROUP group consumer
[COUNT count] [BLOCK milliseconds]
STREAMS key [key ...] ID [ID ...]

  • このコマンドは version 5.0.0 から使用できます。
  • 時間計算量は O(log(N)+M) です。N はストリームに保存されているエントリ(ID)の個数、M は返されるエントリの個数です。

<< XGROUP XREADGROUP XACK >>

Email 返事がかかってなれば、メールでお知らせします。