Trouver les clés correspondant à un motif sans KEYS et les supprimer en sécurité (SCAN + UNLINK)
RedisMaintenanceCommande
# 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 UNLINKCe que fait la commande
Parcourt l'espace de clés avec un curseur sans bloquer le serveur, compte les clés correspondant à un motif et un type, et les supprime en masse avec UNLINK, en libérant la mémoire en arrière-plan.
Quand l'utiliser
Lors du nettoyage des clés laissées par une ancienne version de l'application, pour savoir combien de clés existent sous un préfixe, ou quand KEYS serait sinon nécessaire en production.
Attention
KEYS renvoie tout l'espace de clés d'un coup et bloque le serveur pendant plusieurs secondes sur de gros volumes ; ne l'utilisez pas en production. SCAN n'offre aucune garantie complète pour les clés ajoutées/supprimées pendant le parcours et peut renvoyer la même clé plusieurs fois. Les noms de clés contenant des espaces ou des guillemets cassent avec xargs. Vérifiez le nombre et quelques échantillons avant de supprimer ; il n'y a pas d'annulation.