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?
2
Answers
You need to run
redis-cli
with –raw to get the result clean as arguments fro theredis-cli del
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 islist
,set
,hash
,sorted_set
with a lot of elements. The deletion process will cost lots of time, redis cannot respond to other command.use
scan
&&unlink
instead ofkeys
&&del
can avoid blocking.For the difference between
scan
andkeys
,unlink
anddel
:scan vs keys
del vs unlink