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):
KEEPREForkeepref: Keep consumer group referencesDELREFordelref: Delete consumer group referencesACKEDoracked: 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 IDMultiple Entries
# Delete multiple stream entriesresult = redis.xdelex( "mystream", "1638360173533-0", "1638360173533-1", "1638360173533-2")print(result) # List of results for each IDWith 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 IDWith 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 IDCleanup 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 IDUse 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.