5

Now I am connect to redis, find some keys like this:

> keys "user:login:user:*"
user:login:user:62668
user:login:user:61970
user:login:user:63586

......

Now I want to delete this keys, I have tried:

keys "user:login:user:*" | xargs del

keys "user:login:user:*" | del

keys "user:login:user:*" | redis-cli xargs del

both could not work, what should I do to delete it batch for one action?

1

2 Answers 2

3

Better way

Although @Guy Korland answered the question, but that way may cause long-term blocking. We should always remmber redis use single thread to operate data, so if you have a lot of keys match user:login:user:* or each key's type is list, set, hash, sorted_set with a lot of elements. The deletion process will cost lots of time, redis cannot respond to other command.

redis-cli --scan --pattern users:* | xargs redis-cli unlink

use scan && unlink instead of keys && del can avoid blocking.

For the difference between scan and keys, unlink and del:

scan vs keys
del vs unlink

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

Comments

1

You need to run redis-cli with --raw to get the result clean as arguments fro the redis-cli del

redis-cli del `redis-cli --raw keys "user:login:user:*"`

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.