skip to Main Content

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


  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:*"`
    
    Login or Signup to reply.
  2. 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

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search