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!
2
Answers
You can do something like this –
Redis
EVAL
to run a Lua script that:I have tested it and it works for me on the
redis-cli
So in your case you need to run this,
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