Redis删除批处理密钥从密钥名称中删除斜杠

时间:2019-10-16 13:59:38

标签: redis xargs redis-cli

在MacOs 10.15环境中,当我列出一些密钥时,我有一个奇怪的Redis行为:

redis-cli -n 1 --scan --pattern "product_doctrine*"

例如:

product_doctrine[AppBundle\Entity\ColumnMapping\$GEDMO_TIMESTAMPABLE_CLASSMETADATA][21546]

但是它不会使用xargs删除它:

redis-cli -n 1 --scan --pattern "product_doctrine*" | xargs -L 1 redis-cli -n 1 del
(integer) 0

键名是否具有特殊字符?因为如果运行此inide,则redis-cli:

SCAN 0 MATCH product_doctrine*

它显示带有转义反斜杠的键:

"product_doctrine[AppBundle\\Entity\\ShopSettings\\$GEDMO_SOFTDELETEABLE_CLASSMETADATA][11677]"

redis-cli内部,我可以成功地删除这些键

127.0.0.1:6379[1]> del "product_doctrine[AppBundle\\Entity\\ShopSettings\\$GEDMO_SOFTDELETEABLE_CLASSMETADATA][11677]"
(integer) 1

1 个答案:

答案 0 :(得分:0)

在macOS 10.14上执行以下操作:

redis-cli --scan --pattern "foo*" | sed 's/\\/\\\\/' | xargs -L 1 redis-cli DEL

¯\ _(ツ)_ /¯