DEV Community

Cover image for How to get all keys in Redis
Johnny Simpson
Johnny Simpson

Posted on • Originally published at fjolt.com

How to get all keys in Redis

In Redis, we use KEYS to retrieve specific keys we've defined in our database. For example, if we'd created a Redis key like this:

set someKeyName someValue
Enter fullscreen mode Exit fullscreen mode

Then we could get that value by using KEYS like this:

KEYS someKeyName
Enter fullscreen mode Exit fullscreen mode

Interestingly, Redis KEYS support glob style patterns - so we can match many keys using text familiar to you if you've ever worked with regex. Here are some examples:

  • someK?y - the question mark represents any one character - so someKqy, someKay, someKyy, etc, are all valid.
  • someK*y - the asterisk represents any character including spaces - so someKy is valid
  • someK[a-d]y - to match someKay, someKby, someKcy or someKdy.
  • someK[ea]y, - to match someKey or someKay
  • someK[^10]y - where [^10] means any number before 10 not including 10.
  • someK[^e]y - where [^e] means any letter before e, but not including e.

This glob style pattern support also lets us retrieve all keys at once. Since the asterisk () or wild card symbol is supported, **to retrieve all keys in redis at once*, you only have to run KEYS *:

KEYS *
Enter fullscreen mode Exit fullscreen mode

If you have a lot of keys, this may not be what you want to do - but for certain use cases, it can be quite useful to retrieve all keys in Redis at once.

Top comments (1)

Collapse
 
artyum profile image
Artyum

From the official documentation:

Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout. Don't use KEYS in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider using SCAN or sets.

Also, KEYS (just like any other command) is a blocking call as Redis is single-threaded. Executing this command on an instance that contains a lot of keys will block the incoming requests until the execution is done. (source)