Я хочу удалить ключи, соответствующие "user *".
как это сделать в командной строке redis?
Я хочу удалить ключи, соответствующие "user *".
как это сделать в командной строке redis?
Теперь это не функция, чтобы иметь возможность сделать это за один снимок (см. комментарии в 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.Не указывать, что это лучший подход (у вас могут быть некоторые проблемы, если у некоторых из ваших имен пользователей есть пробелы в них, но, надеюсь, вы понимаете).
Другой компактный однострочный я использую, чтобы сделать то, что вам нужно:
redis-cli KEYS "user*" | xargs redis-cli DEL
В дополнение к ответу orangeoctopus вам не нужны echo
и pipe, вы можете передавать команды в качестве аргументов в redis-cli
. Это означает, что вы можете сделать
for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
do redis-cli "DEL" "$key"
done
Используя awk
, найдите все соответствующие ключи из redis, используя команду redis-cli KEYS
command and pipe to redis-cli DEL
.
redis-cli KEYS "user*" | awk '{ system("redis-cli DEL " $1) }'
Я знаю, что это устарело, но для тех, кто приехал сюда, Google:
Я только что опубликовал утилиту интерфейса командной строки для npm и github, которая позволяет вам удалять ключи, которые соответствуют заданному шаблону (даже если вы спросили пользователя) из базы данных Redis.
Вы можете найти утилиту здесь:
При использовании oneliner вы можете редактировать шаблон в случае, если он ускользает от определенных символов. Например, для удаления таких шаблонов, как "\ b test\b", используйте:
redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del
Используйте это, чтобы удалить ключи redis, имеющие обратную косую черту, кавычки, двойные кавычки или пробелы:
redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL