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


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

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

8   51   2012-01-10 09:45:22

8 ответов:

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

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

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

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

  1. echo 'KEYS user*' | redis-cli | awk '{print }' -- получить все ключи и удалить лишний текст, который вы не хотите с на awk.
  2. echo DEL $key -- для каждого из них создайте оператор echo, чтобы удалить его.
  3. | 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 }'`
 do redis-cli "DEL" "$key"
done

теперь есть команда для удаления ключа, т. е. DEL key [keys]

DEL ключ...

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

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

Я знаю, что это старый, но для тех из вас, кто приходит сюда форма Google:

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

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

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

при использовании 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