Подтвердить что ты не робот

В redis, как мне удалить ключи?

Я хочу удалить ключи, соответствующие "user *".

как это сделать в командной строке redis?

4b9b3361

Ответ 1

Теперь это не функция, чтобы иметь возможность сделать это за один снимок (см. комментарии в DEL documentation). К сожалению, вы остаетесь только с помощью KEYS, прокручивая результаты, а затем используя DEL, чтобы удалить каждый из них.

Как использовать bash немного, чтобы помочь?

for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
 do echo DEL $key
done | redis-cli

Чтобы пройти через него:

  • echo 'KEYS user*' | redis-cli | awk '{print $1}' - получите все ключи и вычеркните лишний текст, который вы не хотите с awk.
  • echo DEL $key - для каждого из них создайте оператор эха, чтобы удалить его.
  • | redis-cli - возьмите инструкции DEL и передайте их обратно в cli.

Не указывать, что это лучший подход (у вас могут быть некоторые проблемы, если у некоторых из ваших имен пользователей есть пробелы в них, но, надеюсь, вы понимаете).

Ответ 2

Другой компактный однострочный я использую, чтобы сделать то, что вам нужно:

redis-cli KEYS "user*" | xargs redis-cli DEL

Ответ 3

В дополнение к ответу orangeoctopus вам не нужны echo и pipe, вы можете передавать команды в качестве аргументов в redis-cli. Это означает, что вы можете сделать

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done

Ответ 4

Используя awk, найдите все соответствующие ключи из redis, используя команду redis-cli KEYS command and pipe to redis-cli DEL.

redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'

Ответ 5

Я знаю, что это устарело, но для тех, кто приехал сюда, Google:

Я только что опубликовал утилиту интерфейса командной строки для npm и github, которая позволяет вам удалять ключи, которые соответствуют заданному шаблону (даже если вы спросили пользователя) из базы данных Redis.

Вы можете найти утилиту здесь:

https://www.npmjs.com/package/redis-utils-cli

Ответ 6

При использовании oneliner вы можете редактировать шаблон в случае, если он ускользает от определенных символов. Например, для удаления таких шаблонов, как "\ b test\b", используйте:

redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del

Ответ 7

Используйте это, чтобы удалить ключи redis, имеющие обратную косую черту, кавычки, двойные кавычки или пробелы:

redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL