xadd
XADD
Redis 開発者教育の申込
|
Redis 定期点検/技術サポートRedis Technical Support |
Redis エンタープライズサーバーRedis Enterprise Server |
|---|
ストリームにデータを追加
使い方は XADD key ID field value です。
ID は以前に入力された ID より常に大きい値である必要があります。
ID は指定することもできますが、一般的には '*'(asterisk) を使います。そうすると常に大きい値が入力されます。
Example
| コマンド> | XADD sensor-1234 * temperature 98.7 |
| 結果> | 1538319053569-0 |
|
ID は2つの数字で構成されます。 <millisecondsTime>-<sequenceNumber> 前は millisecond 単位の timestamp 数字で、後ろの sequenceNumber は 8バイト整数です。 SequenceNumber は同じミリ秒内にさらにデータが入ると重複を防ぐため 0, 1, 2, 3 のように1つずつ増加します。 そのため同一ミリ秒内に生成できるエントリ(entry)数に実質的な制限はありません。 ID を * で入力するのは Redis インスタンスが実行中のサーバー時刻で ID を生成することです。 |
フェイルオーバー(failover) 後の注意事項
マスター(master) A がダウンしクローン(clone) B がマスターに昇格した場合、 B ノードの timestamp が A ノードより小さいとデータは入力されません。 そのためサーバー同士の時刻を同期する必要があります。
ID を指定する場合
- 元データに ID として使える値がある場合は ID を指定するのもよい方法です。 例えばセンサーがミリ秒でデータを発生し Redis サーバーが1秒に1回受け取る場合、重複の余地はありません。
- ID の前半を生成するキーを使うこともできます。
INCR sensor-1234-timestamp - XADD sensor-0001 0-1 temperature 101
ID に 0 または 0-0 は入力できません。 - XADD sensor-0001 1000 temperature 102
SequenceNumber は省略できます。
オプション
- NOMKSTREAM
このオプションは新しいキーを作りません。既にあるキーにだけ追加します。No Make Stream.
誤ってキーを作ることを防ぎます。
version 6.2 で追加されました。 - MAXLEN
入力しながらストリームの最大件数を制限したい場合は次のように MAXLEN オプションを使います。
XADD sensor-1234 MAXLEN 10 * temperature 100
この場合、削除と追加が1オペレーションで動くため追加だけより時間がかかります。注意してください。 こうしたケース向けの特別なオプションがあります。
XADD sensor-1234 MAXLEN ~ 10 * temperature 100
~ オプションは削除できる場合だけ削除します。 - MINID
このオプションを使うと threshold に ID を入力します。 入力した ID より小さい(未満)データを削除します。
version 6.2 で追加されました。 - LIMIT
このオプションは削除されるデータ数を制限します。 version 6.2 で追加されました。
構文
XADD key [NOMKSTREAM] [MAXLEN|MINID [=|~] threshold [LIMIT count]] *|ID field value [field value ...]
- このコマンドは version 5.0.0 から使用できます。
- version 6.2 で NOMKSTREAM, MINID, LIMIT オプションが追加されました。
- 時間計算量は O(log(N)) です。N はストリームに既に保存されているエントリ(ID)の個数です。
- ID を返します。
| SQL Insert | Redis Enterprise 7.3.0 以上なら INSERT を使ってみてください。 |
| << STREAMS Introduction | XADD | XADDS >> |
|---|
Email
返事がかかってなれば、メールでお知らせします。
