Table des matières
1. Qu'est-ce que Big Key ?
2. La scène où se produit Big Key ?
3. Quels sont les dangers de Big Key ?
4. Comment identifier la Grande Clé ?
5. Comment résoudre le problème de la Grande Clé ?
Connaissances supplémentaires : conception des clés
Maison base de données Redis Comment résoudre le problème Big Key dans Redis

Comment résoudre le problème Big Key dans Redis

May 27, 2023 pm 02:41 PM
redis

1. Qu'est-ce que Big Key ?

En termes simples, Big Key signifie que la valeur correspondant à une certaine clé est très grande et occupe une grande quantité d'espace Redis. La clé peut souvent être définie par le programme lui-même, et la valeur n'est souvent pas contrôlée par le programme, la valeur peut donc être très grande.

Les valeurs correspondant à ces Big Keys dans Redis sont très volumineuses et prennent beaucoup de temps dans le processus de sérialisation/désérialisation. Par conséquent, lorsque nous utilisons Big Key, cela prend généralement du temps, ce qui peut entraîner le blocage de Redis. . Réduisant ainsi les performances de Redis.

Utilisez plusieurs exemples pratiques pour décrire les caractéristiques des grandes Clés :

● Une Clé de type String, sa valeur est de 5 Mo (les données sont trop volumineuses)

● Une Clé de type Liste, son nombre de listes est de 20 000 ; (trop de listes) ;

● Une clé de type ZSet avec 10 000 membres (trop de membres) ;

● Une clé au format Hash avec seulement 1 000 membres mais la taille totale de la valeur de ces membres est de 100 Mo (la taille des membres est trop grande) ; );

Dans les affaires réelles, la détermination des clés volumineuses doit encore être jugée de manière globale en fonction des scénarios d'utilisation réels et des scénarios commerciaux de Redis. Elle est généralement jugée par la taille des données et le nombre de membres.

2. La scène où se produit Big Key ?

1. Une mauvaise utilisation de la structure de données Redis

L'utilisation de Redis dans des scénarios qui ne conviennent pas à ses capacités entraîne une valeur de clé trop grande, comme l'utilisation d'une clé de type chaîne pour stocker des données de fichiers binaires volumineux.

2. Échec du nettoyage des données indésirables à temps

En raison de l'incapacité de nettoyer régulièrement les données invalides, le nombre de membres dans la clé de type HASH continue d'augmenter. La valeur augmentera à l'infini car elle continuera uniquement à recevoir des données sans aucun mécanisme de suppression.

3. Estimations commerciales inexactes

Considération insuffisante dans la planification et la conception avant le lancement de l'entreprise, et les membres de la clé n'ont pas été raisonnablement répartis, ce qui a entraîné un trop grand nombre de membres dans les clés individuelles.

4. Liste des fans de célébrités et de célébrités Internet, et une liste de commentaires sur une certaine actualité brûlante

Supposons que nous utilisions la structure de données Liste pour enregistrer les fans d'une certaine célébrité/célébrité Internet, ou enregistrer le liste de commentaires sur les actualités brûlantes, car le nombre de fans Les actualités brûlantes auront beaucoup de taux de clics et de commentaires, il y aura donc beaucoup d'éléments stockés dans la collection Liste, ce qui peut entraîner une valeur trop élevée. grand, ce qui entraîne un problème Big Key.

3. Quels sont les dangers de Big Key ?

1. Blocage des requêtes

La valeur correspondant à Big Key est relativement grande Lorsque nous la lisons et l'écrivons, cela prend beaucoup de temps, ce qui peut bloquer le traitement ultérieur des requêtes. Le thread principal de Redis est monothread, ce qui signifie que toutes les requêtes seront traitées en série. Si la requête précédente n'est pas terminée, la requête suivante ne sera pas traitée.

2. Augmentation de la mémoire

La mémoire consommée par la lecture de Big Key augmentera par rapport à la clé normale, si elle continue d'augmenter, cela peut provoquer un OOM (débordement de mémoire) ou atteindre la valeur maximale de réglage de la mémoire maximale de redis. Provoque le blocage de l'écriture ou l'expulsion de clés importantes.

3. Réseau bloqué

Lors de la lecture d'une valeur unique importante, elle occupera plus de bande passante de la carte réseau du serveur, se ralentira et pourra affecter d'autres instances ou applications Redis sur le serveur.

4. Impact sur la synchronisation maître-esclave et la commutation maître-esclave

La suppression d'une clé volumineuse entraînera un blocage prolongé de la bibliothèque principale et entraînera une interruption de synchronisation ou une commutation maître-esclave.

4. Comment identifier la Grande Clé ?

1. Utilisez l'identification de commande fournie avec redis

Par exemple, vous pouvez utiliser le client Redis officiel redis-cli plus le paramètre --bigkeys pour trouver les 5 types de données d'une certaine instance (String, hash, list, set, zset) de la clé maximale.
L'avantage est qu'il peut être scanné en ligne sans bloquer le service ; l'inconvénient est qu'il y a moins d'informations et que le contenu n'est pas assez précis.

2. Utilisez la commande debug object key

pour analyser la clé en fonction de l'objet entrant (le nom de la clé) et renvoyer une grande quantité de données. La valeur de serializedlength est la longueur sérialisée de la clé. Il convient de noter que la longueur sérialisée de la clé n'est pas égale à sa longueur réelle dans l'espace mémoire. De plus, l'objet de débogage est une commande de débogage coûteuse à exécuter et, lorsqu'elle est en cours d'exécution, d'autres requêtes entrent. Redis sera bloqué jusqu'à son exécution. Et seules les informations d’une seule clé peuvent être trouvées à la fois, ce n’est donc pas officiellement recommandé.

3. outil open source redis-rdb-tools

Cette méthode consiste à exécuter bgsave sur l'instance redis, qui déclenchera la sauvegarde instantanée de redis, générera le fichier de persistance rdb, puis analysera le fichier rdb vidé. Trouvez la grande clé.

L'avantage est que les informations clés obtenues sont détaillées, qu'il existe de nombreux paramètres facultatifs et qu'elles prennent en charge les exigences personnalisées. Les informations de résultat peuvent être sélectionnées au format json ou csv et le traitement ultérieur est pratique. L'inconvénient est qu'il nécessite une connexion hors ligne. opération et il faut beaucoup de temps pour obtenir les résultats.

5. Comment résoudre le problème de la Grande Clé ?

Pour résoudre le problème de la Big Key, il suffit de réduire la taille de la valeur correspondant à la clé, c'est-à-dire pour la structure de données String, de réduire la longueur de la chaîne stockée pour la List, Hash, Set, Et ZSet Structure de données réduisant l'ensemble Nombre d'éléments dans .

1. Divisez la grande clé

Divisez une grande clé en plusieurs petites clés telles que la valeur-clé, et assurez-vous que le nombre ou la taille de chaque clé se situe dans une plage raisonnable, puis stockez-la, en obtenant différentes clés ou en utilisant mget pour les obtenir par lots.

2. Nettoyez les grosses clés

Nettoyez les grosses clés dans Redis et supprimez ces données de Redis. Redis fournit la commande UNLINK depuis la version 4.0, qui peut nettoyer lentement et progressivement les clés entrantes de manière non bloquante. Grâce à UNLINK, vous pouvez supprimer en toute sécurité des clés volumineuses ou même des clés extra-larges.

3. Surveillez la mémoire de Redis, la bande passante du réseau, le délai d'attente et d'autres indicateurs

En surveillant le système et en définissant un seuil d'alarme de mémoire Redis raisonnable pour nous rappeler que des clés volumineuses peuvent être générées à ce moment-là, telles que : Mémoire Redis l'utilisation dépasse 70 %, le taux de croissance de la mémoire Redis dépasse 20 % en 1 heure, etc.

4. Nettoyez régulièrement les données invalides

L'accumulation d'une grande quantité de données invalides se produira si une certaine clé a écrit une grande quantité de données de manière incrémentielle, mais que l'actualité des données a été ignorée. Les données invalides peuvent être nettoyées via des tâches planifiées.

5. Compresser la valeur

Utilisez des algorithmes de sérialisation et de compression pour contrôler la taille de la clé, mais il convient de noter que la sérialisation et la désérialisation entraîneront une certaine consommation de performances. Si la valeur est toujours très grande après compression, vous pouvez envisager de diviser davantage la clé.

Connaissances supplémentaires : conception des clés

(1) [Recommandation] : Lisibilité et gérabilité

Préfixez le nom de l'entreprise (ou le nom de la base de données) (pour éviter les conflits de clés) et séparez-le par deux points, comme le nom de l'entreprise : Nom de la table : id
o2o : order:1

(2) [Suggestion] : Simplicité

Contrôler la longueur de la clé tout en garantissant la sémantique Lorsqu'il y a beaucoup de clés, l'utilisation de la mémoire ne peut pas être ignorée, par exemple :
user:{uid}:friends:messages:{mid} est simplifié en u:{uid}m:{mid}

(3) [Obligatoire] : Ne pas inclure de caractères spéciaux

Contre-exemple : inclure des espaces , nouvelles lignes, caractères simples Guillemets doubles et autres caractères d'échappement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment construire le mode Cluster Redis Comment construire le mode Cluster Redis Apr 10, 2025 pm 10:15 PM

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment effacer les données redis Comment effacer les données redis Apr 10, 2025 pm 10:06 PM

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Comment utiliser Redis Lock Comment utiliser Redis Lock Apr 10, 2025 pm 08:39 PM

L'utilisation des opérations Redis pour verrouiller nécessite l'obtention du verrouillage via la commande setnx, puis en utilisant la commande Expire pour définir le temps d'expiration. Les étapes spécifiques sont les suivantes: (1) Utilisez la commande setnx pour essayer de définir une paire de valeurs de clé; (2) Utilisez la commande Expire pour définir le temps d'expiration du verrou; (3) Utilisez la commande del pour supprimer le verrouillage lorsque le verrouillage n'est plus nécessaire.

Comment utiliser la commande redis Comment utiliser la commande redis Apr 10, 2025 pm 08:45 PM

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

Comment lire le code source de Redis Comment lire le code source de Redis Apr 10, 2025 pm 08:27 PM

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

Comment résoudre la perte de données avec Redis Comment résoudre la perte de données avec Redis Apr 10, 2025 pm 08:24 PM

Les causes de la perte de données redis incluent les défaillances de mémoire, les pannes de courant, les erreurs humaines et les défaillances matérielles. Les solutions sont: 1. Stockez les données sur le disque avec RDB ou AOF Persistance; 2. Copiez sur plusieurs serveurs pour une haute disponibilité; 3. Ha avec Redis Sentinel ou Redis Cluster; 4. Créez des instantanés pour sauvegarder les données; 5. Mettre en œuvre les meilleures pratiques telles que la persistance, la réplication, les instantanés, la surveillance et les mesures de sécurité.

Comment utiliser la ligne de commande redis Comment utiliser la ligne de commande redis Apr 10, 2025 pm 10:18 PM

Utilisez l'outil de ligne de commande redis (Redis-CLI) pour gérer et utiliser Redis via les étapes suivantes: Connectez-vous au serveur, spécifiez l'adresse et le port. Envoyez des commandes au serveur à l'aide du nom et des paramètres de commande. Utilisez la commande d'aide pour afficher les informations d'aide pour une commande spécifique. Utilisez la commande QUIT pour quitter l'outil de ligne de commande.

See all articles