无法从Redis删除带有前缀的密钥

时间:2019-05-30 16:02:38

标签: redis

如何从Redis 5+中删除具有特定前缀的密钥?

我已经尝试关注,但对我没有用(

root@1acb94e11aa2:/data# redis-cli --version
redis-cli 5.0.4
root@1acb94e11aa2:/data# redis-cli -n 9 KEYS ISO:* | wc -l
935
root@1acb94e11aa2:/data# redis-cli -n 9 KEYS ISO:* | xargs -0 redis-cli -n 9 DEL
(integer) 0
root@1acb94e11aa2:/data# redis-cli -n 9 KEYS ISO:* | wc -l
935
root@1acb94e11aa2:/data# redis-cli -n 9 --scan --pattern ISO:* | xargs -0 redis-cli -n 9 unlink
(integer) 0
root@1acb94e11aa2:/data# 

请告知。

2 个答案:

答案 0 :(得分:0)

只要您的键名不包含空格,您就应该可以运行以下命令:

$ redis-cli -n 9 --scan --pattern "ISO:*" | xargs -n 1 redis-cli -n 9 UNLINK

编辑:如果它们确实包含空格,则可以执行以下操作:

$ redis-cli -n 9 --scan --pattern "ISO:*" | xargs -n 1 -d "\n" redis-cli -n 9 UNLINK

答案 1 :(得分:0)

FIX:

root@1acb94e11aa2:/data# redis-cli -n 9 KEYS ISO:* | xargs -d "\n" redis-cli -n 9 del
(integer) 262
root@1acb94e11aa2:/data#
root@1acb94e11aa2:/data# redis-cli -n 9 KEYS ISO:*
(empty list or set)
root@1acb94e11aa2:/data#