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

keybodystrrequired

The key of the stream.

idsbody*List[str]required

One or more stream entry IDs to delete.

optionbodyLiteral['KEEPREF', 'DELREF', 'ACKED', 'keepref', 'delref', 'acked']

Optional deletion behavior (case-insensitive):

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

Response

List[int]required

A list of integers indicating the result for each ID in the same order as provided.

Single Entry
# Delete a single stream entryresult = redis.xdelex("mystream", "1638360173533-0")print(result)  # List of results for each ID
Multiple Entries
# Delete multiple stream entriesresult = redis.xdelex(    "mystream",    "1638360173533-0",    "1638360173533-1",    "1638360173533-2")print(result)  # List of results for each ID
With Option
# Use KEEPREF option to keep consumer group referencesresult = redis.xdelex(    "mystream",    "1638360173533-0",    "1638360173533-1",    option="KEEPREF")print(result)  # List of results for each ID# Use DELREF option to delete consumer group referencesresult = redis.xdelex(    "mystream",    "1638360173533-0",    option="DELREF")print(result)  # List of results for each ID# Use ACKED option to only acknowledge (don't delete)result = redis.xdelex(    "mystream",    "1638360173533-0",    option="ACKED")print(result)  # List of results for each ID
With Stream Processing
# Add entries to streamredis.xadd("events", "*", {"type": "login", "user": "john"})redis.xadd("events", "*", {"type": "logout", "user": "john"})# Read entriesentries = redis.xrange("events", "-", "+")print(entries)# Delete specific entriesdeleted = redis.xdelex(    "events",    entries[0][0],  # First entry ID    entries[1][0]   # Second entry ID)print(f"Results: {deleted}")  # List of results for each ID
Cleanup Old Entries
# Get entries older than a certain timestampold_entries = redis.xrange("logs", "-", "1638360000000-0")# Delete old entriesif old_entries:    ids = [entry[0] for entry in old_entries]    deleted = redis.xdelex("logs", *ids)    print(f"Results: {deleted}")  # List 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…