В моей среде 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
по-разному обрабатывает обратную косую черту. Это, в сочетании с причудами оболочки и redis-cli, приводит к вашему опыту. - person Itamar Haber   schedule 16.10.2019