Stream

XDELEX

Extended delete for streams with reference control.

The XDELEX command provides extended deletion capabilities for stream entries with additional control options. This is an enhanced version of XDEL with more advanced features for managing stream data.

Arguments

keybodystringrequired

The key of the stream.

optionbody'KEEPREF' | 'keepref' | 'DELREF' | 'delref' | 'ACKED' | 'acked'

Optional deletion behavior (case-insensitive). When provided, must come before the IDs:

  • KEEPREF: Keep consumer group references
  • DELREF: Delete consumer group references
  • ACKED: Only acknowledge messages (don't delete)

If not provided, entries are deleted by default.

idsbody...string[]required

One or more stream entry IDs to delete. When an option is provided, IDs must come after the option.

Response

number[]required

An array of numbers indicating the result for each ID in the same order as provided.

Single Entry
// Delete a single stream entryconst result = await redis.xdelex("mystream", "1638360173533-0");console.log(result); // Array of results for each ID
Multiple Entries
// Delete multiple stream entriesconst result = await redis.xdelex(  "mystream",   "1638360173533-0",  "1638360173533-1",  "1638360173533-2");console.log(result); // Array of results for each ID
With Option
// Use KEEPREF option to keep consumer group referencesconst result = await redis.xdelex(  "mystream",  "KEEPREF",  "1638360173533-0",  "1638360173533-1");console.log(result); // Array of results for each ID// Use DELREF option to delete consumer group referencesconst result2 = await redis.xdelex(  "mystream",  "DELREF",  "1638360173533-0");console.log(result2); // Array of results for each ID// Use ACKED option to only acknowledge (don't delete)const result3 = await redis.xdelex(  "mystream",  "ACKED",  "1638360173533-0");console.log(result3); // Array of results for each ID
With Stream Processing
// Add entries to streamawait redis.xadd("events", "*", { type: "login", user: "john" });await redis.xadd("events", "*", { type: "logout", user: "john" });// Read entriesconst entries = await redis.xrange("events", "-", "+");console.log(entries);// Delete specific entriesconst deleted = await redis.xdelex(  "events",  entries[0][0], // First entry ID  entries[1][0]  // Second entry ID);console.log(`Results: ${deleted}`); // Array of results for each ID
Cleanup Old Entries
// Get entries older than a certain timestampconst oldEntries = await redis.xrange("logs", "-", "1638360000000-0");// Delete old entriesif (oldEntries.length > 0) {  const ids = oldEntries.map(entry => entry[0]);  const deleted = await redis.xdelex("logs", ...ids);  console.log(`Results: ${deleted}`); // Array of results for each ID}

Use Cases

  • Stream Cleanup: Remove processed or expired stream entries
  • Data Retention: Implement custom retention policies
  • Error Handling: Delete corrupted or invalid stream entries
  • Memory Management: Clean up streams to free memory

This command is available in Redis 8.2.0 and later. It provides extended functionality compared to the standard XDEL command.

Loading search…