redispurge

Redis - Delete all but one key


we are currently using this command from shell to purge our Redis DB:

redis-cli -h zapi.data.com flushdb

However, now I am being told that I have to delete all keys, except for the key that is "zrtt_industry". How can I do a regular expression that will delete all but the key matching my pattern, that pattern being "zrtt_industry".

Many thanks!


Solution

  • Unfortunately, Redis does not provide a native “negative match” pattern or a built-in command to flush all keys except for a specific one. You must instead retrieve all keys and then filter them out before deleting.

    Approach using a shell pipeline: 1. List all keys with redis-cli keys "*". 2. Use grep -v to exclude the key zrtt_industry. 3. Pass the remaining keys to redis-cli del via xargs.

    For example:

    redis-cli -h zapi.data.com KEYS "*" | grep -v '^zrtt_industry$' | xargs -n 1 redis-cli -h zapi.data.com DEL