XADD

    Appends the specified stream entry to the stream at the specified key. If the key does not exist, as a side effect of running this command the key is created with a stream value. The creation of stream’s key can be disabled with the option.

    An entry is composed of a list of field-value pairs. The field-value pairs are stored in the same order they are given by the user. Commands that read the stream, such as XRANGE or XREAD, are guaranteed to return the fields and values exactly in the same order they were added by XADD.

    XADD is the only command that can add data to a stream, but there are other commands, such as XDEL and XTRIM, that are able to remove data from a stream.

    A stream entry ID identifies a given entry inside a stream.

    IDs are specified by two numbers separated by a - character:

    Both quantities are 64-bit numbers. When an ID is auto-generated, the first part is the Unix time in milliseconds of the Dragonfly instance generating the ID. The second part is just a sequence number and is used in order to distinguish IDs generated in the same millisecond.

    You can also specify an incomplete ID, that consists only of the milliseconds part, which is interpreted as a zero value for sequence part. To have only the sequence part automatically generated, specify the milliseconds part followed by the - separator and the * character:

    IDs are guaranteed to be always incremental: If you compare the ID of the entry just inserted it will be greater than any other past ID, so entries are totally ordered inside a stream. In order to guarantee this property, if the current top ID in the stream has a time greater than the current local time of the instance, the top entry time will be used instead, and the sequence part of the ID incremented. This may happen when, for instance, the local clock jumps backward, or if after a failover the new master has a different absolute time.

    incorporates the same semantics as the XTRIM command - refer to its documentation page for more information. This allows adding new entries and keeping the stream’s size in check with a single call to XADD, effectively capping the stream with an arbitrary threshold. Although exact trimming is possible and is the default, due to the internal representation of steams it is more efficient to add an entry and trim stream with XADD using almost exact trimming (the ~ argument).

    For example, calling XADD in the following form:

    Will add a new entry but will also evict old entries so that the stream will contain only 1000 entries, or at most a few tens more.

    Bulk string reply, specifically:

    The command returns a when used with the option and the key doesn’t exist.