Stream

XADD

Appends one or more new entries to a stream.

Arguments

keybodystringrequired

The key to of the stream.

idbodystring | *required

The stream entry ID. Supports multiple formats:

  • *: Fully automatic ID generation (both timestamp and sequence)
  • <ms>-<seq>: Explicit ID (e.g., "1526919030474-55")
  • <ms>-*: Auto-generate sequence number for the given millisecond timestamp (Redis 8+)
entriesbodyRecord<string, unknown>required

Key-value data to be appended to the stream.

optionsbodyobject

Response

string
The ID of the newly added entry.
Basic Example
const result = await redis.xadd("mystream", "*", { name: "John Doe", age: 30 });
With Custom ID
const result = await redis.xadd("mystream", "1634567890123-0", { temperature: 25.5, humidity: 60 });
Trimming with MAXLEN
const result = await redis.xadd("mystream", "*", { event: "user_login", user_id: "12345" }, {  trim: {    type: "MAXLEN",    threshold: 1000,    comparison: "="  }});
Prevent Stream Creation
const result = await redis.xadd("existing_stream", "*", { data: "value" }, {  nomkStream: true});
Trimming with MINID
const result = await redis.xadd("mystream", "*", { action: "purchase", amount: 99.99 }, {  trim: {    type: "MINID",    threshold: "1634567890000-0",    comparison: "="  }});
Auto Sequence Number (Redis 8+)
// Specify millisecond timestamp, let Redis generate sequence numberconst ms = Date.now();const id1 = await redis.xadd("mystream", `${ms}-*`, { event: "login", user: "john" });console.log(id1); // e.g., "1769347235123-0"// Multiple entries with same ms but different sequence numbersconst id2 = await redis.xadd("mystream", `${ms}-*`, { event: "logout", user: "john" });console.log(id2); // e.g., "1769347235123-1"
Precise Timestamp Control
// Use auto sequence for precise timestamp controlconst timestamp = 1634567890123;const result = await redis.xadd("events", `${timestamp}-*`, {   type: "payment",  amount: 100.00,  currency: "USD"});// Redis generates the sequence number automatically

ID Format Details

Automatic ID (*)

Fully automatic - Redis generates both the millisecond timestamp and sequence number.

Explicit ID (<ms>-<seq>)

You provide both the millisecond timestamp and sequence number. Example: "1526919030474-55"

Auto Sequence (<ms>-*) - Redis 8+

You provide the millisecond timestamp, Redis automatically generates the sequence number. This is useful when you need precise control over the timestamp but want Redis to handle sequence numbering.

Benefits of Auto Sequence:

  • Precise timestamp control for time-sensitive data
  • Automatic sequence management prevents conflicts
  • Multiple entries can share the same millisecond with different sequences
  • Ideal for batch operations with consistent timestamps
Loading search…