Skip to main content
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

key
str
required
The key of the stream.
ids
*List[str]
required
One or more stream entry IDs to delete.
option
Literal['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

A list of integers indicating the result for each ID in the same order as provided.
# Delete a single stream entry
result = redis.xdelex("mystream", "1638360173533-0")
print(result)  # List of results for each ID
# Delete multiple stream entries
result = redis.xdelex(
    "mystream",
    "1638360173533-0",
    "1638360173533-1",
    "1638360173533-2"
)
print(result)  # List of results for each ID
# Use KEEPREF option to keep consumer group references
result = redis.xdelex(
    "mystream",
    "1638360173533-0",
    "1638360173533-1",
    option="KEEPREF"
)
print(result)  # List of results for each ID

# Use DELREF option to delete consumer group references
result = 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
# Add entries to stream
redis.xadd("events", "*", {"type": "login", "user": "john"})
redis.xadd("events", "*", {"type": "logout", "user": "john"})

# Read entries
entries = redis.xrange("events", "-", "+")
print(entries)

# Delete specific entries
deleted = 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
# Get entries older than a certain timestamp
old_entries = redis.xrange("logs", "-", "1638360000000-0")

# Delete old entries
if 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.