Delete Redis Keys by Prefix in Python (Detailed Guide w/ Code Examples)

Use Case(s)

Deleting keys by prefix in Redis is a common task when working with cache invalidation or data synchronization scenarios. It can be used to remove all keys that match a certain pattern, for example, delete all keys that start with 'user_profile' when user's profile information changes.

Code Examples

Let's assume we're using the redis-py client for Python.

import redis r = redis.Redis(host='localhost', port=6379, db=0) for key in r.scan_iter('user_profile*'): r.delete(key)

In this example, scan_iter is used to iteratively find keys that match the 'user_profile*' pattern. For each such key, we call delete method to remove it from Redis.

Best Practices

  • Be mindful of using the delete operation in production applications, as it may affect performance, especially if the number of keys is large.

  • It's recommended to use scan operations (like scan_iter) instead of the keys command for finding keys by pattern, as keys can block the server when called on large databases.

Common Mistakes

  • A common mistake is to accidentally delete keys without ensuring the correct pattern. Always double-check your key patterns before deleting.

  • Using the keys method instead of scan_iter could lead to performance issues. The keys method retrieves all keys and can be slow in large databases.


Q: Can I undo a delete operation in Redis?

A: No, once a key is deleted, it cannot be recovered. Make sure to use the delete operation cautiously.

Q: What's the difference between keys and scan_iter commands?

A: The keys command retrieves all keys in the database at once and can block the server if the database is large. On the other hand, scan_iter uses a cursor to iteratively scan through the database, which is more efficient and recommended.

Was this content helpful?

Start building today

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