对于
现在我连接到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:*
匹配的键,或者每个键的类型都是list
、set
、hash
、sorted_set
,并且有很多元素。删除过程将花费大量时间,redis无法响应其他命令。
redis-cli --scan --pattern users:* | xargs redis-cli unlink
使用scan
&;CCD_ 7而不是CCD_&CCD_ 9可以避免阻塞。
对于scan
与keys
、unlink
与del
之间的差异:
扫描与密钥
del与取消链接
您需要使用--raw运行redis-cli
,以将结果清除为redis-cli del
的参数
redis-cli del `redis-cli --raw keys "user:login:user:*"`