Utilisation des commandes scan dans Redis sous Linux
Redis, un magasin de structures de données en mémoire open-source, est connu pour sa rapidité et sa polyvalence en tant que base de données clé-valeur. L’une de ses puissantes fonctionnalités est la possibilité d’itérer de manière incrémentale dans les ensembles de données à l’aide de commandes de scan. Cette fonction est particulièrement utile lorsqu’il s’agit de grands ensembles de données, car elle permet d’extraire efficacement les données sans surcharger le serveur. Pour les utilisateurs d’un serveur Linux dédié, l’utilisation de commandes de scan dans Redis peut améliorer les performances de traitement des données en permettant un traitement précis et optimisé des ensembles de données. Dans cet article, nous allons voir comment utiliser efficacement les commandes scan dans Redis dans un environnement Linux, en proposant des exemples détaillés et les meilleures pratiques pour gérer et récupérer des données à l’échelle…
Que sont les commandes scan ?
Les commandes de scan de Redis permettent d’itérer sur des clés, des ensembles, des hachages et des ensembles triés de manière non bloquante. Contrairement à la commande KEYS, qui peut être dangereuse pour les grands ensembles de données car elle renvoie toutes les clés correspondantes en même temps, les commandes de scan renvoient un petit nombre d’éléments à la fois. Cela minimise l’impact sur les performances et permet une itération incrémentale.
Commandes scan des clés
- SCAN: parcourt les clés de l’espace-clé.
- SSCAN: parcourt les éléments d’un ensemble.
- HSCAN: parcourt les champs et les valeurs d’un hachage.
- ZSCAN: parcourt les membres et les scores d’un ensemble trié.
Syntaxe de base des commandes scan
Chaque commande scan a une syntaxe similaire :
- curseur: Un nombre entier qui représente la position à partir de laquelle le scan doit commencer. Pour commencer un nouveau scan, utilisez 0.
- MATCH pattern: (optionnel) Un motif pour filtrer les clés renvoyées. Prend en charge les motifs de type “glob”.
- COUNT count: (facultatif) Indication à Redis du nombre d’éléments à renvoyer à chaque itération.
Installation de Redis sous Linux
Pour CentOS/RHEL, utilisez :
Une fois installé, démarrez le serveur Redis :
Connexion à Redis
Ouvrez votre terminal et connectez-vous à votre instance Redis en utilisant le CLI Redis :
Vous pouvez maintenant exécuter des commandes Redis dans le CLI.
Utiliser la commande SCAN
Exemple 1 : SCAN de base
Pour récupérer toutes les clés de la base de données Redis, vous pouvez utiliser la commande SCAN :
Cette commande renvoie un curseur et une liste de clés.
Exemple 2 : Utilisation de MATCH pour filtrer les touches
Si vous souhaitez trouver les touches qui correspondent à un modèle spécifique, par exemple les touches qui commencent par “user :”, vous pouvez utiliser la commande MATCH :
Cette commande ne renvoie que les clés qui commencent par “user :”.
Exemple 3 : Spécifier COUNT
Pour indiquer le nombre de clés que Redis doit renvoyer à chaque itération, vous pouvez spécifier un nombre :
Cette méthode tentera de renvoyer environ 10 clés. Notez que le nombre réel de clés renvoyées peut être inférieur à ce chiffre.
Exemple 4 : Itérer à travers toutes les clés
Pour parcourir toutes les touches en plusieurs itérations, vous devez garder une trace du curseur renvoyé. Voici un exemple simple de script shell :
curseur=0
while true; do
result=$(redis-cli SSCAN myset $cursor MATCH apple:*)
echo "$result" # Traiter le résultat selon les besoins
cursor=$(echo "$result" | awk 'NR==1{print $1}') # Mettre à jour le curseur
if [[ "$cursor" == "0" ]] ; then
break # Arrête lorsque le curseur est revenu à 0
fi
done
Utilisation de la commande SSCAN
La commande SSCAN est utilisée pour parcourir les éléments d’un ensemble. Sa syntaxe est similaire à celle de SCAN :
Exemple de SSCAN
Étape 1 : Créer un ensemble et ajouter des éléments
Créons un ensemble appelé myset et ajoutons-y des éléments :