【问题标题】:Redis delete batch keys strips slashes from key namesRedis 删除批处理键从键名中删除斜杠
【发布时间】:2020-02-13 08:15:24
【问题描述】:

在我的 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

可能是键名有特殊字符吗?因为如果我在 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

【问题讨论】:

  • 您使用的是哪个操作系统?具体来说,哪个xargs?请注意,根据其手册页,xargs 对反斜杠的处理方式不同。这与 shell 和 redis-cli 的怪癖相结合会带来您的体验。
  • 我在 MacOs 10.15 环境下运行它

标签: redis xargs redis-cli


【解决方案1】:

在 macOS 10.14 上执行以下操作:

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

¯\_(ツ)_/¯

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多