2012-01-10 16 views

Odpowiedz

33

Nie jest to obecnie funkcja umożliwiająca zrobienie jednego zdjęcia (patrz komentarze w dokumencie DEL documentation). Niestety, pozostaje ci tylko użycie KEYS, zapętlenie wyników, a następnie użycie DEL, aby usunąć każdy z nich.

Co powiesz na bash, aby pomóc?

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

Aby przejść przez niego:

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}' - uzyskać wszystkie klucze i rozebrać się dodatkowy tekst, który nie ma z awk.
  2. echo DEL $key - dla każdego z nich utwórz instrukcję echo, aby ją usunąć.
  3. | redis-cli - weź instrukcje DEL i przekaż je z powrotem do cli.

Nie sugeruję, że jest to najlepsze podejście (możesz mieć pewne problemy, jeśli niektóre z twoich nazw użytkowników zawierają spacje, ale mam nadzieję, że masz rację).

2

Oprócz odpowiedzi orangeoctopus, nie potrzebujesz echo i potoku, możesz przekazywać polecenia jako argumenty do redis-cli. Oznacza to, że można zrobić

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

Kolejny kompaktowy jedno-liner używam do tego, co chcesz, jest:

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

To jest świetne, dzięki. To smutne, że Redis nie ma tej funkcji natywnie. – snapfractalpop

+3

Jeśli masz wiele baz danych (przestrzenie kluczy), to jest to sztuczka: Powiedzmy, że musisz usunąć klucze w db3: prefiks 'redis-cli -n 3 KEYS: *" | xargs redis-cli -n 3 DEL' – Christoffer

+0

czy istnieje jedna linijka, jeśli musisz podać AUTH (np. login) przed wykonaniem polecenia delete? – thames

0

wiem, że to jest stary, ale dla tych z was przychodzi tu tworzyć Google:

Właśnie opublikowałem narzędzie interfejsu wiersza poleceń do npm i github, które pozwala ci usunąć klucze, które pasują do danego wzoru (nawet , lub jak zapytałeś użytkownika) z bazy danych Redis.

można znaleźć narzędzia tutaj:

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

1

Korzystanie awk, znajdź wszystkie pasujące klucze od REDiS korzystających redis-cli KEYS polecenie i rurę do polecenia redis-cli DEL.

0

Podczas korzystania z onelinu, możesz edytować wzór na wypadek, gdyby wymykał się określonym znakom. Na przykład, aby usunąć wzorców jak '\ test b \ b' użytku:

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

Służy do usuwania kluczy Redis mający backslashy, cytaty, cudzysłowów ani spacji:

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

Powiązane problemy