xreadgroup
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
返事がかかってなれば、メールでお知らせします。
