Tous les produits
Search
Centre de documentation

Tair (Redis® OSS-Compatible):Clés volumineuses et clés fréquemment accédées

Dernière mise à jour :Aug 08, 2026

Les clés volumineuses et les clés fréquemment accédées peuvent dégrader les performances des services, provoquer des délais d'attente des requêtes ou même entraîner des pannes système. Cette rubrique explique comment identifier et optimiser rapidement ces types de clés. Elle analyse également leurs causes et leurs effets, et fournit des mesures préventives pour réduire leur impact sur votre activité.

Étape 1 : Identifier rapidement les clés volumineuses et les clés fréquemment accédées

Outils de la console Alibaba Cloud

Tair et Redis proposent les fonctionnalités Statistiques des principales clés (Top Key Statistics) et Analyse complète hors ligne des clés (Offline Full Key Analysis) dans la console pour vous aider à repérer rapidement les clés volumineuses et les clés fréquemment accédées.

Méthode

Limites

Description

Procédure

Statistiques des principales clés (Recommandé)

Cette fonctionnalité est prise en charge uniquement par Redis Open-Source Edition 5.0 ou version ultérieure, ainsi que par les instances optimisées pour la mémoire et les instances à mémoire persistante de Tair (Enterprise Edition).

  • Affiche en temps réel les informations relatives aux trois principales clés volumineuses et aux trois principales clés fréquemment accédées pour chaque structure de données dans chaque shard.

  • Permet de consulter l'historique des clés volumineuses et des clés fréquemment accédées des quatre derniers jours.

  1. Connectez-vous à la console et accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où se trouve l'instance que vous souhaitez gérer. Recherchez ensuite l'instance et cliquez sur son ID.

  2. Dans le volet de navigation de gauche, cliquez sur CloudDBA > Top Key Statistics ou sur Offline Key Analysis.

Analyse complète hors ligne des clés

Cette fonctionnalité n'est pas prise en charge pour les instances basées sur disque.

  • Effectue une analyse personnalisée du fichier de sauvegarde RDB pour obtenir des informations telles que l'utilisation de la mémoire, la distribution et la durée de validité des clés.

  • L'analyse n'est pas effectuée en temps réel et peut prendre du temps pour les fichiers RDB volumineux.

  • Ne permet pas d'analyser les informations relatives aux clés fréquemment accédées.

Si votre instance ne prend pas en charge ces fonctionnalités, utilisez les méthodes suivantes.

Autres méthodes pour identifier les clés volumineuses et les clés fréquemment accédées

Méthode

Avantages et inconvénients

Description

Utilisez les paramètres bigkeys, memkeys et hotkeys de redis-cli

  • Avantages : Pratique, rapide et sûr.

  • Inconvénients : Les résultats de l'analyse ne sont pas personnalisables et peuvent manquer de précision ou d'actualité. Cette méthode parcourt toutes les clés de l'instance, ce qui peut affecter les performances.

Les paramètres bigkeys, memkeys et hotkeys de redis-cli permettent de récupérer les statistiques globales des clés ainsi que la principale clé volumineuse ou fréquemment accédée pour chaque structure de données.

Les différences sont les suivantes :

  • bigkeys : Statistiques relatives aux clés volumineuses. Pour les collections ou les listes, renvoie le nombre d'éléments.

  • memkeys : Statistiques relatives aux clés volumineuses. Renvoie la taille mémoire occupée par la valeur de la clé.

  • hotkeys : Statistiques relatives aux clés fréquemment accédées.

Structures de données prises en charge : STRING, LIST, HASH, SET, ZSET et STREAM.

Par exemple, la commande pour bigkeys est redis-cli -h r-*.redis.rds.aliyuncs.com -a <password> --bigkeys.

Analysez les clés cibles à l'aide de commandes intégrées

  • Avantages : Impact minimal sur les services en ligne.

  • Inconvénients : La longueur sérialisée renvoyée pour une clé ne correspond pas à sa longueur réelle en mémoire. Par conséquent, le résultat n'est pas précis et doit servir uniquement de référence.

Pour les clés de différentes structures de données, utilisez les commandes à faible risque suivantes pour déterminer si elles sont volumineuses.

  • Type STRING : La commande STRLEN renvoie le nombre d'octets de la valeur correspondant à la clé.

  • Type LIST : La commande LLEN renvoie la longueur de la liste correspondant à la clé.

  • Type HASH : La commande HLEN renvoie le nombre de membres correspondant à la clé.

  • Type SET : La commande SCARD renvoie le nombre de membres correspondant à la clé.

  • Type ZSET : La commande ZCARD renvoie le nombre de membres correspondant à la clé.

  • Type STREAM : La commande XLEN renvoie le nombre de membres correspondant à la clé.

Remarque

Les commandes DEBUG OBJECT et MEMORY USAGE sont gourmandes en ressources et ont une complexité temporelle de O(N). Elles peuvent bloquer l'instance et ne sont pas recommandées.

Localisez les clés fréquemment accédées au niveau de la couche métier

  • Avantages : Permet de localiser avec précision et rapidité les clés fréquemment accédées.

  • Inconvénients : Augmente la complexité du code métier et peut légèrement dégrader les performances.

Ajoutez du code au niveau de la couche métier pour enregistrer les accès à l'instance et effectuer une analyse asynchrone.

Utilisez l'outil redis-rdb-tools pour une analyse personnalisée des clés volumineuses

  • Avantages : Prend en charge une analyse personnalisée sans impact sur les services en ligne.

  • Inconvénients : L'analyse n'est pas effectuée en temps réel et peut prendre du temps pour les fichiers RDB volumineux.

Redis-rdb-tools est un outil open source écrit en Python qui prend en charge l'analyse personnalisée des fichiers snapshot RDB. Après avoir téléchargé le fichier RDB, vous pouvez analyser l'utilisation de la mémoire de toutes les clés de l'instance et effectuer des requêtes flexibles selon vos besoins.

Identifiez les clés fréquemment accédées à l'aide de la commande MONITOR

  • Avantages : Pratique et sûr.

  • Inconvénients : Consomme des ressources CPU, mémoire et réseau. Les résultats peuvent manquer d'actualité ou de précision.

La commande MONITOR affiche toutes les requêtes envoyées à l'instance, y compris l'horodatage, les informations client, les commandes et les informations sur les clés.

En cas d'urgence, exécutez brièvement la commande MONITOR et enregistrez la sortie dans un fichier. Après avoir arrêté la commande MONITOR, analysez les requêtes contenues dans le fichier pour identifier les clés fréquemment accédées durant cette période.

Remarque

Étant donné que la commande MONITOR peut considérablement dégrader les performances de l'instance, ne l'utilisez pas sauf dans des circonstances exceptionnelles.

Étape 2 : Optimiser les clés volumineuses et les clés fréquemment accédées

Clés volumineuses

Solution

Scénarios

Actions recommandées

Nettoyez les données expirées

Une grande quantité de données expirées s'est accumulée, par exemple des données incrémentielles non nettoyées dans un HASH.

Utilisez la commande HSCAN conjointement avec la commande HDEL pour nettoyer les données invalides. Cela évite de bloquer l'instance, ce qui pourrait se produire si vous nettoyiez une grande quantité de données en une seule fois.

Compressez les clés volumineuses

Données compressibles telles que les textes JSON et XML, y compris les journaux et les configurations.

  • Activez la compression lors de la sérialisation, par exemple avec GZIP ou Snappy.

  • Utilisez un protocole de sérialisation binaire, tel que Protocol Buffers.

Remarque

Les opérations de compression et de décompression consomment des ressources CPU supplémentaires et peuvent affecter les performances de traitement.

Divisez les clés volumineuses

Structures de données HASH, ZSET et autres fréquemment accédées, telles que les classements.

  • Divisez les clés selon la logique métier, par exemple par ID utilisateur ou par plage de temps.

  • Utilisez une conception de clé de sharding, telle que user:1001:shard1 et user:1001:shard2.

La division des clés volumineuses permet d'éviter efficacement le déséquilibre des données.

Déchargez les clés volumineuses

Fichiers volumineux ou objets binurs volumineux (BLOB) de type String.

Stockez les données inappropriées dans d'autres systèmes de stockage, tels qu'OSS, et supprimez-les de l'instance.

  • Pour Redis Open-Source Edition 4,0 et versions ultérieures : Utilisez la commande UNLINK pour supprimer en toute sécurité les clés volumineuses, voire très volumineuses. Cette commande nettoie les clés de manière asynchrone afin d'éviter de bloquer le thread principal.

  • Pour les versions antérieures à Redis Open-Source Edition 4,0 : Utilisez la commande SCAN pour parcourir et supprimer les données par lots. Cela évite de bloquer le thread principal, ce qui pourrait se produire en cas de suppression simultanée de nombreuses clés.

Clés fréquemment accédées

Solution

Scénarios

Actions recommandées

Répliquez les clés fréquemment accédées dans une architecture en cluster

Une clé fréquemment accédée est stockée intégralement dans un seul shard et les requêtes ne peuvent pas être distribuées en migrant partiellement les données.

Copiez la clé fréquemment accédée et migrez les réplicas vers d'autres shards de données. Par exemple, copiez une clé fréquemment accédée nommée foo pour créer trois clés identiques nommées foo2, foo3 et foo4. Migrez ces trois clés vers d'autres shards de données afin de soulager la pression exercée sur le shard de données unique contenant la clé fréquemment accédée.

Remarque

L'inconvénient de cette solution est que vous devez modifier votre code pour gérer plusieurs réplicas, et il est difficile de garantir la cohérence des données entre eux. Par exemple, une opération de mise à jour doit être synchronisée sur tous les réplicas. Utilisez cette solution comme mesure temporaire pour atténuer les problèmes urgents.

Activez la séparation lecture/écriture

Charges de travail avec beaucoup de lectures et peu d'écritures

Si la charge des requêtes de lecture reste élevée après l'activation de cette fonctionnalité, ajoutez davantage de nœuds en lecture seule pour alléger davantage la charge.

Remarque

Dans les scénarios où le volume de requêtes est extrêmement élevé, la synchronisation primaire/secondaire aura inévitablement une latence, ce qui peut entraîner la lecture de données obsolètes. Par conséquent, n'activez pas la séparation lecture/écriture dans les scénarios soumis à une forte pression en lecture et en écriture et exigeant une stricte cohérence des données.

Étape 3 : Empêcher les clés volumineuses et les clés fréquemment accédées d'affecter votre activité

Causes des clés volumineuses et des clés fréquemment accédées

Dans Tair et Redis, l'unité minimale de distribution des données est une clé. Une clé unique est stockée dans un shard de données spécifique et n'est pas divisée. Des facteurs tels qu'une planification métier insuffisante, l'accumulation de données invalides et des augmentations soudaines du volume d'accès peuvent tous entraîner la génération de clés volumineuses et de clés fréquemment accédées dans une instance. Voici quelques exemples :

Catégorie

Cause

Clé volumineuse

  • Utilisation de Tair et Redis dans des scénarios inadaptés, ce qui peut entraîner des valeurs de clé excessivement volumineuses. Par exemple, utiliser une clé de type String pour stocker de grandes quantités de données de fichiers binaires.

  • Planification et conception insuffisantes avant le déploiement de l'application. Les membres au sein des clés ne sont pas divisés de manière rationnelle, ce qui entraîne un nombre excessif de membres dans certaines clés.

  • Absence de nettoyage périodique des données invalides, entraînant une augmentation continue du nombre de membres des clés de type HASH.

  • Défaillance du code côté consommateur d'un service utilisant des clés de type LIST, entraînant une augmentation constante du nombre de membres de la clé correspondante.

Clé fréquemment accédée

  • Augmentations inattendues et brutales du volume d'accès. Exemples : succès soudain d'un produit, actualité virale générant un trafic important, événement d'un streamer sur une chaîne en direct générant de nombreux « J'aime », ou bataille entre plusieurs guildes dans un jeu impliquant de nombreux joueurs dans une zone spécifique.

Effets des clés volumineuses et des clés fréquemment accédées

Catégorie

Effet

Clé volumineuse

  • Ralentit l'exécution des commandes sur le client.

  • Lorsque la mémoire de l'instance atteint la limite maxmemory, cela peut bloquer les opérations, entraîner l'éviction de clés importantes ou même provoquer une erreur de mémoire insuffisante (OOM).

  • Dans une architecture en cluster, l'utilisation de la mémoire d'un shard de données dépasse largement celle des autres, empêchant une utilisation équilibrée des ressources mémoire entre les shards.

  • L'exécution de requêtes de lecture sur une clé volumineuse peut saturer la bande passante réseau de l'instance, ralentissant ses propres services et affectant les services connexes.

  • La suppression d'une clé volumineuse peut facilement bloquer la base de données principale pendant une longue période, ce qui peut déclencher une rupture de synchronisation ou un basculement primaire/secondaire.

Clé fréquemment accédée

  • Consomme une grande quantité de ressources CPU et peut augmenter l'utilisation de la bande passante réseau, ce qui affecte les autres requêtes et réduit les performances globales.

  • Dans une architecture en cluster, cela provoque un déséquilibre des accès, où un shard de données est fortement sollicité tandis que les autres sont inactifs. Cela peut entraîner des problèmes tels que l'épuisement de la limite de connexions pour ce shard et le rejet des nouvelles demandes de connexion.

  • Dans les scénarios de vente flash, le volume de requêtes pour la clé de stock d'un produit peut dépasser la capacité de traitement de l'instance, entraînant des ventes excessives.

  • Si la pression des requêtes sur une clé fréquemment accédée dépasse la capacité de l'instance, cela peut facilement provoquer un effondrement du cache. Cela signifie que de nombreuses requêtes sont dirigées vers la couche de stockage backend, entraînant une augmentation soudaine des accès au stockage ou même une panne, ce qui affecte à son tour les autres services.

Stratégies de prévention

Stratégie

Description

Configurer la surveillance et les alertes

Définissez des seuils d'alerte raisonnables pour des métriques telles que l'utilisation du processeur, l'utilisation de la mémoire et les connexions. Par exemple, configurez une alerte lorsque l'utilisation de la mémoire dépasse 70 % ou augmente de plus de 20 % en une heure. Lorsqu'une alerte est déclenchée, suivez les instructions des étapes 1 et 2 de cette rubrique pour localiser et optimiser les clés volumineuses et les clés fréquemment accédées. Cela permet de résoudre le problème avant qu'il n'affecte votre activité.

Utilisez Tair (Enterprise Edition) pour éviter de nettoyer les données invalides

Pour les scénarios impliquant des clés volumineuses de type hash, Tair (Enterprise Edition) propose une structure de données améliorée, TairHash. Elle permet de définir une durée de validité et une version pour chaque champ. En utilisant correctement TairHash, vous pouvez réduire considérablement la charge opérationnelle, simplifier la complexité du code métier et gérer efficacement les problèmes causés par les clés volumineuses et les clés fréquemment accédées.