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 referencesDELREF: Delete consumer group referencesACKED: 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 IDMultiple Entries
// Delete multiple stream entriesconst result = await redis.xdelex( "mystream", "1638360173533-0", "1638360173533-1", "1638360173533-2");console.log(result); // Array of results for each IDWith 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 IDWith 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 IDCleanup 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.