DBAtlas · Atlas für Datenbankbetrieb

Keys nach Muster ohne KEYS finden und sicher löschen (SCAN + UNLINK)

RedisWartung

Befehl

# Cursor-based scan instead of KEYS (call again with the returned cursor until it returns 0):
SCAN 0 MATCH oturum:* COUNT 1000 TYPE string
# Number of keys matching the pattern:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | wc -l
# Bulk delete in batches of 500, freeing memory in the background:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | xargs -r -n 500 redis-cli -h redis1 -p 6379 UNLINK

Was es tut

Durchsucht den Keyspace mit einem Cursor, ohne den Server zu blockieren, zählt Keys, die zu Muster und Typ passen, und löscht sie massenhaft mit UNLINK, wobei der Speicher im Hintergrund freigegeben wird.

Wann einsetzen

Beim Aufräumen von Keys einer alten Anwendungsversion, um herauszufinden, wie viele Keys unter einem Präfix existieren, oder wenn sonst KEYS in der Produktion nötig wäre.

Vorsicht

KEYS liefert den gesamten Keyspace auf einmal und blockiert den Server bei großen Datenmengen für Sekunden; nicht in der Produktion verwenden. SCAN gibt für während des Scans hinzugefügte/entfernte Keys keine vollständige Garantie und kann denselben Key mehrfach liefern. Keynamen mit Leerzeichen oder Anführungszeichen brechen mit xargs. Prüfe vor dem Löschen die Anzahl und einige Stichproben; es gibt kein Rückgängig.

In DBAtlas öffnen →

Verwandte Einträge