7

I am using Redis hash set to store data in the following format:

hset b1.b2.b3 name test

Now I want to delete this key so I am using the following format:

del b1.b2.*

But it not working so how I delete the Redis key using a pattern?

1

4 Answers 4

13

Redis does not provide any method to delete bulk keys. But redis-cli along with xargs can be used to achieve what you are trying to do. See the commands below:

127.0.0.1:6379> hset b1.b2.b3 name test
(integer) 1
127.0.0.1:6379> hgetall b1.b2.b3
1) "name"
2) "test"
$ redis-cli --scan --pattern b1.b2.* | xargs redis-cli del
(integer) 1
$ redis-cli
127.0.0.1:6379> hgetall b1.b2.b3
(empty list or set)

We are scanning redis for a pattern using '--scan' and the output is given to redis-cli again using the xargs method whcih combines all the keys in the scan result and finally we delete all of them using 'del' command.

Sign up to request clarification or add additional context in comments.

3 Comments

how we can implement this using Redis node js module.
Please accept the answer or edit your question. It doesn’t say you have to implement this in nodejs
As an addendum to this, I would recommend using unlink instead of del. The key difference is that an unlink command is non-blocking.
2

If you'd like to do this via the redis-cli in bulk, you could consider expiring all the keys based on a specified pattern:

EVAL 'for i, name in ipairs(redis.call("KEYS", <pattern>)) do redis.call("EXPIRE", name, 1); end' 0

Effectively it sets the expiration to 1 second so this should do the trick!

2 Comments

Works great! Should be a built-in command, glarily missing for some reason... they got every other damn thing in that api, tho!
Note - all Lua scripts block exclusively, so this will block everything if it's long running.
0

In my case this command worked like a charm:

redis-cli -a myPass keys "*myKeyword*" | xargs -I% redis-cli -a myPass del "%"

Comments

-2

You can do it using the pattern above @Ankit answered.

you can do a SCAN and then delete the keys until nothing left (cursor is 0)

https://redis.io/commands/scan

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.