Comment résoudre les problèmes dans Redis

Introduction

Redis est un système de stockage de données open source de type clé-valeur en mémoire. Il est livré avec plusieurs commandes qui peuvent aider à résoudre les problèmes et à effectuer le débogage. En raison de la nature de Redis en tant que système de stockage clé-valeur en mémoire, bon nombre de ces commandes se concentrent sur la gestion de la mémoire, mais d’autres sont précieuses pour fournir une vue d’ensemble de l’état de votre serveur Redis. Ce tutoriel fournira des détails sur l’utilisation de certaines de ces commandes pour aider à diagnostiquer et résoudre les problèmes auxquels vous pourriez être confronté lors de l’utilisation de Redis.

Comment utiliser ce guide

Ce guide est rédigé sous forme de mémo avec des exemples autonomes. Nous vous encourageons à accéder directement à toute section pertinente pour la tâche que vous essayez d’accomplir.

Les commandes présentées dans ce guide ont été testées sur un serveur Ubuntu 22.04 exécutant la version 6.0.16 de Redis. Pour configurer un environnement similaire, vous pouvez suivre l’étape 1 de notre guide sur Comment installer et sécuriser Redis sur Ubuntu 22.04. Nous illustrerons le comportement de ces commandes en les exécutant avec redis-cli, l’interface de ligne de commande Redis. Si vous utilisez une interface Redis différente, comme Redli, par exemple, la sortie exacte de certaines commandes peut différer.

Alternativement, vous pouvez provisionner une instance de base de données Redis gérée pour tester ces commandes, mais en fonction du niveau de contrôle autorisé par votre fournisseur de base de données, certaines commandes de ce guide peuvent ne pas fonctionner comme décrit. Pour provisionner une base de données gérée DigitalOcean, suivez notre documentation sur le produit Managed Databases. Ensuite, vous devez soit installer Redli soit configurer un tunnel TLS afin de vous connecter à la base de données gérée via TLS.

memory usage vous indique combien de mémoire est actuellement utilisée par une clé unique. Il prend le nom d’une clé comme argument et affiche le nombre d’octets qu’elle utilise. Tout d’abord, définissez une variable d’exemple :

  1. set key_meaningOfLife "Food"

Ensuite, vérifiez la mémoire avec memory usage :

  1. memory usage key_meaningOfLife
Output
(integer) 88

Pour une compréhension plus générale de la façon dont votre serveur Redis utilise la mémoire, vous pouvez exécuter la commande memory stats :

  1. memory stats

Cette commande affiche un tableau de métriques liées à la mémoire et leurs valeurs. Les métriques suivantes sont rapportées par memory stats :

  • peak.allocated: Le nombre maximum d’octets consommés par Redis
  • total.allocated: Le nombre total d’octets alloués par Redis
  • startup.allocated: Le nombre initial d’octets consommés par Redis au démarrage
  • replication.backlog: La taille du journal de réplication, en octets
  • clients.slaves: La taille totale de tous les surcoûts des répliques, c’est-à-dire les tampons de sortie et de requête et les contextes de connexion
  • clients.normal: La taille totale de tous les surcoûts client
  • aof.buffer: La taille totale des tampons actuels et de réécriture du fichier journal en mode ajout seulement
  • db.0: Les surcoûts des dictionnaires principal et d’expiration pour chaque base de données utilisée sur le serveur, rapportés en octets
  • overhead.total: La somme de tous les surcoûts utilisés pour gérer l’espace clé de Redis
  • keys.count: Le nombre total de clés stockées dans toutes les bases de données du serveur
  • keys.bytes-per-key: Le ratio de l’utilisation nette de la mémoire du serveur et de keys.count
  • dataset.bytes: La taille de l’ensemble de données, en octets
  • dataset.percentage: Le pourcentage de l’utilisation nette de la mémoire de Redis pris par dataset.bytes
  • peak.percentage: Le pourcentage de peak.allocated extrait de total.allocated
  • fragmentation: Le ratio de la quantité de mémoire actuellement utilisée divisée par la mémoire physique que Redis utilise réellement.

memory malloc-stats fournit un rapport statistique interne de jemalloc, l’allocateur de mémoire utilisé par Redis sur les systèmes Linux :

  1. memory malloc-stats

S’il semble que vous rencontrez des problèmes liés à la mémoire, mais que l’analyse de la sortie des commandes précédentes s’avère peu utile, vous pouvez essayer d’exécuter memory doctor :

  1. memory doctor

Cette fonctionnalité affichera tous les problèmes de consommation de mémoire qu’elle peut trouver et suggérera des solutions potentielles.

Obtention d’informations générales sur votre instance Redis

A debugging command that isn’t directly related to memory management is monitor. This command allows you to review a constant stream of every command processed by the Redis server:

  1. monitor
Output
OK 1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared" 1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"

Une autre commande utile pour le débogage est info, qui renvoie plusieurs blocs d’informations et de statistiques sur le serveur :

  1. info
Output
# Server redis_version:6.0.16 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:a3fdef44459b3ad6 redis_mode:standalone os:Linux 5.15.0-41-generic x86_64 . . .

Cette commande renvoie beaucoup d’informations. Si vous voulez seulement retourner un seul bloc d’informations, vous pouvez le spécifier comme argument de info :

  1. info CPU
Output
# CPU used_cpu_sys:173.16 used_cpu_user:70.89 used_cpu_sys_children:0.01 used_cpu_user_children:0.04

Remarquez que les informations renvoyées par la commande info dépendront de la version de Redis que vous utilisez.

Utilisation de la commande keys

La commande keys est utile dans les cas où vous avez oublié le nom d’une clé, ou peut-être que vous en avez créé une mais avez accidentellement mal orthographié son nom. keys recherche des clés qui correspondent à un motif :

  1. keys pattern

Les variables de style glob suivantes sont prises en charge :

  • ? est un joker représentant n’importe quel caractère, donc s?mmy correspond à sammy, sommy, et sqmmy
  • * est un joker qui représente n’importe quel nombre de caractères, y compris aucun caractère du tout, donc sa*y correspond à sammy, say, sammmmmmy, et salmony
  • Vous pouvez spécifier deux caractères ou plus que le motif peut inclure en les plaçant entre crochets, donc s[ai]mmy correspond à sammy et simmy, mais pas à summy
  • Pour définir un joker qui ignore une ou plusieurs lettres, enveloppez-les entre crochets et précédez-les d’un accent circonflexe (^), donc s[^oi]mmy correspond à sammy et sxmmy, mais pas à sommy ou simmy
  • Pour définir un joker qui inclut une plage de lettres, séparez le début et la fin de la plage par un trait d’union et enveloppez-le entre crochets, donc s[a-o]mmy correspond à sammy, skmmy, et sommy, mais pas à srmmy

Avertissement : La documentation Redis avertit que keys ne doit presque jamais être utilisé en environnement de production car il peut avoir un impact négatif majeur sur les performances.

Conclusion

Ce guide détaille plusieurs commandes utiles pour le dépannage et la résolution des problèmes que l’on pourrait rencontrer en travaillant avec Redis. S’il existe d’autres commandes, arguments ou procédures connexes que vous aimeriez apprendre dans ce guide, veuillez demander ou faire des suggestions dans les commentaires.

Pour plus d’informations sur les commandes Redis, consultez notre série de tutoriels sur Comment Gérer une Base de Données Redis.

Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis