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