Redis удаляет пакетные ключи, удаляет косые черты из имен ключей - PullRequest
0 голосов
/ 16 октября 2019

В моей среде 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

1 Ответ

0 голосов
/ 16 октября 2019

В macOS 10.14 это делается следующим образом:

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

¯ \ _ (ツ) _ / ¯

...