Redis XDEL in Ruby (Detailed Guide w/ Code Examples)

Use Case(s)

The XDEL command is used in Redis' stream data type to delete a message from the stream. This might be useful if you have an application that processes messages asynchronously and wants to remove certain processed or irrelevant messages.

Code Examples

Let's consider a simple example where we add some messages to a stream and then remove one of them.

require 'redis' redis = # Add some messages to the 'mystream' redis.xadd('mystream', '*', 'field1', 'Hello') message_id = redis.xadd('mystream', '*', 'field2', 'World') # Now, let's delete a message using 'XDEL' redis.xdel('mystream', message_id)

In this example, we first create a new connection to the Redis server. Then, we add two messages into 'mystream'. The xadd method returns the ID of the added message, which we store in message_id. We then use xdel with the stream name and this ID to delete the specific message from the stream.

Best Practices

  • Be careful with the use of XDEL. It permanently removes messages from a stream. Make sure to only apply it to messages that are no longer needed.
  • For batch deletion, you may pass multiple message IDs to XDEL.

Common Mistakes

  • Trying to delete a message that does not exist will not return an error but will return 0 as the number of deleted entries. Make sure the message exists before trying to delete it.


Q: Can I use wildcards with XDEL to delete multiple messages?

No, wildcards are not supported with XDEL. However, you can delete multiple messages by passing multiple message IDs.

Q: What happens when I try to delete a non-existent message?

XDEL will not return an error. It will just return 0 as the number of deleted entries.

Was this content helpful?

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.