Ich möchte Schlüssel entfernen, die mit "Benutzer *" übereinstimmen.
Wie mache ich das in der Redis-Kommandozeile?
Antworten:
Dies ist derzeit keine Funktion, die auf einmal ausgeführt werden kann (siehe Kommentare in der DEL
Dokumentation ). Leider bleibt Ihnen nur die Verwendung KEYS
, das Durchlaufen der Ergebnisse und das anschließende DEL
Entfernen der einzelnen Ergebnisse .
Wie wäre es mit ein bisschen Bash, um zu helfen?
for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
do echo DEL $key
done | redis-cli
Um es zu durchlaufen:
echo 'KEYS user*' | redis-cli | awk '{print $1}'
- Holen Sie sich alle Schlüssel und entfernen Sie den zusätzlichen Text, den Sie nicht möchten, mit awk.echo DEL $key
- Erstellen Sie für jede eine Echo-Anweisung, um sie zu entfernen.| redis-cli
- Nehmen Sie die DEL-Anweisungen und geben Sie sie an die CLI zurück.Nicht vorzuschlagen, dass dies der beste Ansatz ist (Sie könnten einige Probleme haben, wenn einige Ihrer Benutzernamen Leerzeichen enthalten, aber hoffentlich verstehen Sie den Punkt).
Ein weiterer kompakter Einzeiler, mit dem ich mache, was Sie wollen, ist:
redis-cli KEYS "user*" | xargs redis-cli DEL
redis-cli -n 3 KEYS "prefix:*" | xargs redis-cli -n 3 DEL
Jetzt gibt es einen Befehl zum Entfernen eines Schlüssels, dh der DEL-Taste [Tasten].
Neben der Antwort von orangeoctopus benötigen Sie die echo
und -Pipe nicht, sondern können Befehle als Argumente übergeben redis-cli
. Das heißt, Sie können tun
for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
do redis-cli "DEL" "$key"
done
Ich weiß, dass dies alt ist, aber für diejenigen von Ihnen, die von Google hierher kommen:
Ich habe gerade ein Befehlszeilenschnittstellen-Dienstprogramm für npm und github veröffentlicht, mit dem Sie Schlüssel aus einer Redis-Datenbank löschen können, die einem bestimmten Muster entsprechen (gerade oder wie Sie den Benutzer gefragt haben ).
Das Dienstprogramm finden Sie hier: