Chcę usunąć klucze pasujące do "użytkownika *".W Redis, w jaki sposób mogę usunąć klucze?
Jak to zrobić w linii poleceń redis?
Chcę usunąć klucze pasujące do "użytkownika *".W Redis, w jaki sposób mogę usunąć klucze?
Jak to zrobić w linii poleceń redis?
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:
echo 'KEYS user*' | redis-cli | awk '{print $1}'
- uzyskać wszystkie klucze i rozebrać się dodatkowy tekst, który nie ma z awk.echo DEL $key
- dla każdego z nich utwórz instrukcję echo, aby ją usunąć.| 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ę).
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
Kolejny kompaktowy jedno-liner używam do tego, co chcesz, jest:
redis-cli KEYS "user*" | xargs redis-cli DEL
To jest świetne, dzięki. To smutne, że Redis nie ma tej funkcji natywnie. – snapfractalpop
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
czy istnieje jedna linijka, jeśli musisz podać AUTH (np. login) przed wykonaniem polecenia delete? – thames
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:
Korzystanie awk
, znajdź wszystkie pasujące klucze od REDiS korzystających redis-cli KEYS
polecenie i rurę do polecenia redis-cli DEL
.
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
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
w REDiS ty nie usuwaj kluczy, ale klucze same się usuwają. –