2012-01-10 1 views

ответ

33

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

Как насчет использования bash для помощи?

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

Активизировать через него:

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

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

2

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

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

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

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

Это замечательно, спасибо. Печально, что Redis не имеет этой функциональности изначально. – snapfractalpop

+3

Если у вас есть множественные базы данных (области ключей), то это трюк: Предположим, вам нужно удалить ключи в db3: префикс 'redis-cli -n 3 KEYS: *" | xargs redis-cli -n 3 DEL' – Christoffer

+0

Есть ли один лайнер, если вам нужно предоставить AUTH (то есть логин) до выполнения команды delete? – thames

0

Я знаю, что это старый, но для тех из вас сюда образуют Google:

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

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

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

1

Использование awk, найти все совпадающие ключи от Redis с помощью redis-cli KEYS команды и трубу redis-cli DEL команды.

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

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

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

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

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