Удалить ключи с пробелами - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь удалить несколько ключей из моей удаленной базы данных Redis, используя следующую команду:

redis-cli -h <host> -p 6379 KEYS "myprefix:*" | xargs redis-cli -h <host> -p 6379 DEL

Он удалил все соответствующие ключи, кроме тех, в которых есть пробелы.

Например,

Удалено:

  • myprefix: abc
  • myprefix: def
  • myprefix: ghi

Не удалено:

  • myprefix: jkl mno
  • myprefix: pqr stu
  • myprefix: vwx yza

Каким должен быть мой шаблон запроса, чтобы он тоже удалялся?Я попробовал поискать в Google, но не смог найти никакого решения.

1 Ответ

0 голосов
/ 12 июня 2018

Проблема в xargs, а не в вашем запросе KEYS.Запустив запрос, вы заметите, что он правильно возвращает ключи с пробелами в них.Проблема в том, что по умолчанию xargs разбивает строки, вставленные в него, пробелами и символами новой строки.Чтобы изменить это поведение так, чтобы оно ограничивалось только символами новой строки, добавьте параметр -d "\ n" .Например:

redis-cli -h <host> -p 6379 keys "myprefix:*" | xargs -d "\n" redis-cli -h <host> -p 6379 del
...