如何在一个命令中批量删除redis密钥
现在我连接到redis,找到一些如下键:如何在一个命令中批量删除redis密钥,redis,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 &qu
> 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
两者都无法工作,我应该如何做才能为一个操作批量删除它?您需要使用--raw运行
redis cli
,以将结果作为redis cli del
redis cli del`redis cli--raw key“用户:登录:用户:”`
更好的方法
虽然@Guy Korland回答了这个问题,但这种方式可能会造成长期阻塞。我们应该始终记住,redis使用单线程来操作数据,因此如果您有许多密钥匹配用户:登录:用户:
,或者每个密钥的类型是列表
,集
,哈希
,排序集
,包含大量元素。删除过程将花费大量时间,redis无法响应其他命令
redis cli--扫描--模式用户:*xargs redis cli取消链接
使用scan
&取消链接而不是键
&del
可以避免阻塞
有关扫描
和键
之间的差异,取消链接
和删除
:
参见