Я хочу видалити ключі, що відповідають "користувачеві *".
Як це зробити в командному рядку redis?
Відповіді:
Зараз це не функція, яку можна робити одним кадром (див. Коментарі в DEL
документації ). На жаль, вам залишається лише використовувати 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 і передайте їх назад у кліп.Не припускаючи, що це найкращий підхід (у вас можуть виникнути проблеми, якщо в деяких ваших іменах користувачів є пробіли, але, сподіваюся, ви зрозумієте).
Ще один компактний однокласний лайнер, який я використовую, щоб робити те, що ви хочете, це:
redis-cli KEYS "user*" | xargs redis-cli DEL
redis-cli -n 3 KEYS "prefix:*" | xargs redis-cli -n 3 DEL
Тепер є команда видалити ключ, тобто клавіша DEL [ключі]
На додаток до відповіді апельсиновика, вам не потрібні echo
і конвеєр, ви можете передавати команди як аргументи redis-cli
. Це означає, що ви можете це зробити
for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
do redis-cli "DEL" "$key"
done
Я знаю, що це старе, але для тих, хто приходить сюди, утворюйте Google:
Я щойно опублікував утиліту інтерфейсу командного рядка для npm та github, що дозволяє видаляти ключі, що відповідають заданому шаблону (навіть , або як ви просили користувача ) з бази даних Redis.
Ви можете знайти утиліту тут: