如何在一个命令中批量删除redis键



现在我连接到redis,找到一些像这样的键:

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

现在我想删除这些密钥,我已经尝试过:

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

两者都不能工作,我该怎么做才能批量删除一个操作?

更好的方法

虽然@Guy Korland回答了这个问题,但那样可能会造成长期的阻塞。我们应该总是使用单线程来操作数据,所以如果你有很多与user:login:user:*匹配的键,或者每个键的类型都是listsethashsorted_set,并且有很多元素。删除过程将花费大量时间,redis无法响应其他命令。

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

使用scan&CCD_ 7而不是CCD_&CCD_ 9可以避免阻塞。

对于scankeysunlinkdel之间的差异:

扫描与密钥
del与取消链接

您需要使用--raw运行redis-cli,以将结果清除为redis-cli del的参数

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

最新更新