Skip to main content

Arguments

key
string
required
The key to of the stream.
id
string | *
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+)
entries
Record<string, unknown>
required
Key-value data to be appended to the stream.
options
object

Response

The ID of the newly added entry.
const result = await redis.xadd("mystream", "*", { name: "John Doe", age: 30 });
const result = await redis.xadd("mystream", "1634567890123-0", { temperature: 25.5, humidity: 60 });
const result = await redis.xadd("mystream", "*", { event: "user_login", user_id: "12345" }, {
  trim: {
    type: "MAXLEN",
    threshold: 1000,
    comparison: "="
  }
});
const result = await redis.xadd("existing_stream", "*", { data: "value" }, {
  nomkStream: true
});
const result = await redis.xadd("mystream", "*", { action: "purchase", amount: 99.99 }, {
  trim: {
    type: "MINID",
    threshold: "1634567890000-0",
    comparison: "="
  }
});
// Specify millisecond timestamp, let Redis generate sequence number
const 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 numbers
const id2 = await redis.xadd("mystream", `${ms}-*`, { event: "logout", user: "john" });
console.log(id2); // e.g., "1769347235123-1"
// Use auto sequence for precise timestamp control
const 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