Table des matières
1. Impact du débordement de tampon Redis
1. Le débordement de tampon entraîne la fermeture de la connexion réseau
2. Un débordement de tampon entraîne une perte ou un crash des données de commande
2. Tampon client
1. Tampon de copie
2. Tampon de retard de réplication
1. Tampon AOF
2. Tampon de réécriture AOF
Maison base de données Redis Comment résoudre le débordement de tampon Redis

Comment résoudre le débordement de tampon Redis

Jun 03, 2023 pm 08:13 PM
redis

    Buffer fait partie de l'espace mémoire. En d'autres termes, une certaine quantité d'espace de stockage est réservée dans l'espace mémoire. Cet espace de stockage est utilisé pour mettre en mémoire tampon les données d'entrée ou de sortie. Cet espace réservé est appelé tampon.

    1. Impact du débordement de tampon Redis

    Dans Redis, il existe trois scénarios principaux dans lesquels le concept de tampon est utilisé.

    Lors de la communication entre le client et le serveur, il est utilisé pour stocker temporairement les données de commande envoyées par le client ou les résultats des données renvoyées par le serveur au client lors de la synchronisation des données entre les nœuds maître et esclave, Redis utilise des tampons. Pour stocker temporairement les commandes d'écriture et les données reçues par le nœud maître, lorsque Redis effectue la persistance AOF, Redis utilise également le concept de tampons pour éviter les écritures fréquentes sur le disque

    Le concept de tampon a été utilisé à l'origine par le système d'exploitation pour atténuer l'incohérence entre Les vitesses des processeurs et des périphériques d'E/S sont introduites pour améliorer le parallélisme des processeurs et des périphériques d'E/S.

    L'inadéquation entre les appareils à haut débit et les appareils à faible débit amènera inévitablement les appareils à haut débit à passer du temps à attendre les appareils à faible débit. Le concept de tampon peut très bien résoudre ce problème. Le tampon est également une incarnation importante du modèle producteur-consommateur.

    Comment résoudre le débordement de tampon Redis

    1. Le débordement de tampon entraîne la fermeture de la connexion réseau

    Si qubf-free est épuisé, cela entraînera un débordement du tampon d'entrée client. La méthode de traitement de Redis consiste à fermer la connexion client, et le résultat sera un. programme métier L'accès aux données n'est pas possible.

    2. Un débordement de tampon entraîne une perte ou un crash des données de commande

    Normalement, il existe de nombreuses connexions client lorsque la quantité totale de mémoire occupée par les connexions client dépasse la configuration de mémoire maximale de Redis, l'obsolescence des données affecte l'accès. performance des programmes commerciaux.

    Même plusieurs clients entraîneront une consommation trop importante de mémoire par Redis et peuvent également provoquer des problèmes de dépassement de mémoire, ce qui peut entraîner le blocage de Redis.

    2. Tampon client

    Il existe deux autres tampons client, le tampon d'entrée et le tampon de sortie, tous deux configurés pour résoudre l'inadéquation des vitesses d'envoi et de traitement des requêtes entre le client et le serveur.

    Comment résoudre le débordement de tampon Redis

    Le tampon d'entrée stocke temporairement les commandes envoyées par le client. Il existe deux raisons courantes de débordement :

    L'écriture de BigKey, comme l'écriture de millions de hachages ou la définition de données à la fois, dépasse la taille du tampon, le serveur. traite la demande trop lentement, provoquant un blocage et étant incapable de traiter la demande à temps, provoquant l'accumulation de plus en plus de demandes envoyées par le client dans le tampon.

    Le tampon de sortie stocke temporairement les données à renvoyer au client par le thread principal Redis.

    Ces données incluent des réponses OK simples et de taille fixe (par exemple, l'exécution de la commande SET) ou des messages d'erreur, ainsi que des résultats d'exécution de tailles variables et contenant des données spécifiques (par exemple, l'exécution de la commande HGET)

    Sortie commune buffers Il existe trois raisons de débordement :

    Renvoyer un grand nombre de résultats BigKey Exécuter certaines commandes déraisonnables Paramètre de taille de tampon déraisonnable

    À en juger par les causes courantes de débordement dans les tampons d'entrée et de sortie, BigKey est la cause la plus probable du débordement. , nous devrions donc essayer d'éviter d'utiliser BigKey.

    Pour le buffer d'entrée, comme il n'y a aucun moyen de changer sa taille (par défaut 1G par client), on ne peut contrôler que la vitesse d'envoi et de traitement des commandes pour éviter au maximum le blocage.

    Pour le tampon de sortie, évitez d'utiliser certaines commandes qui renvoient un grand nombre de résultats comme KEYS, MONITOR, etc. En même temps, vous pouvez éviter les débordements en ajustant la taille du tampon de sortie.

    3. Tampon de copie

    Le tampon de copie est utilisé pour la copie entre les nœuds maître et esclave Redis. Parce que la réplication des données entre les nœuds maître et esclave inclut la réplication complète et la réplication incrémentielle. Par conséquent, le tampon de copie est également divisé en deux types : le tampon de copie et le tampon de retard de copie.

    1. Tampon de copie

    Pendant le processus de réplication complet, le nœud maître continuera à recevoir les demandes de commandes d'écriture envoyées par le client tout en transmettant les fichiers RDB au nœud esclave. Ces commandes d'écriture seront d'abord enregistrées dans le tampon de réplication, puis envoyées au nœud esclave et exécutées une fois le transfert du fichier RDB terminé. Afin d'assurer la synchronisation des données entre les nœuds maître et esclave, chaque nœud esclave maintient un tampon de réplication sur le nœud maître.

    Comment résoudre le débordement de tampon Redis

    Pour le tampon de copie, s'il faut beaucoup de temps à la bibliothèque principale pour transmettre les fichiers RDB et charger les fichiers RDB à partir de la bibliothèque esclave, et en même temps, la bibliothèque principale reçoit de nombreuses opérations de commandes d'écriture, cela entraînera le remplissage et le débordement du tampon de copie.

    Pour éviter le débordement du tampon de réplication, d'une part, nous pouvons contrôler la quantité de données enregistrées par le nœud maître, ce qui peut accélérer le transfert des fichiers RDB et le temps de chargement des bibliothèques esclaves pour éviter l'accumulation de trop de commandes dans le tampon de réplication.

    Vous pouvez également définir la taille du tampon de réplication de manière plus raisonnable pour éviter le débordement en fonction du volume de données du nœud maître, de la pression de charge d'écriture du nœud maître et de la taille de la mémoire du nœud maître lui-même pour éviter le débordement. puisque le nœud maître le définira pour chaque nœud esclave. Pour un tampon de réplication, s'il y a de très nombreux nœuds esclaves dans le cluster, la surcharge mémoire du nœud maître sera très importante, nous devrions donc essayer d'éviter d'avoir trop de nœuds esclaves. pour un nœud maître.

    2. Tampon de retard de réplication

    Pendant le processus de réplication incrémentielle, lorsque le nœud maître et le nœud esclave effectuent une synchronisation régulière, la commande d'écriture sera temporairement stockée dans le tampon de réplication. Si une déconnexion du réseau se produit entre le nœud esclave et le nœud maître, les opérations de commande qui n'ont pas encore été répliquées peuvent être synchronisées à partir du tampon de retard de réplication après la reconnexion du nœud esclave.

    Comment résoudre le débordement de tampon Redis

    Il est à noter que le tampon de backlog de copie est un tampon en anneau de taille limitée.

    Lorsque le nœud maître remplit le tampon du backlog de réplication, il écrasera les anciennes données de commande dans le tampon. À ce stade, les données des nœuds maître et esclave seront incohérentes.

    En réponse à ce problème, la solution générale consiste à augmenter la taille du tampon du backlog de copie. La méthode de calcul de cette taille peut généralement être utilisée

    缓冲区大小=(主库写入命令速度 * 操作大小 - 主从库间网络传输命令速度 * 操作大小)* 2
    Copier après la connexion

    Si le nombre de requêtes simultanées est très important, il est impossible d'ajuster la taille du tampon. résolvez le problème. Ensuite, vous pouvez envisager d'utiliser des clusters de découpage pour le résoudre

    4. Tampon AOF

    Le tampon AOF est le tampon défini par Redis pour la persistance AOF. Le tampon AOF a également deux types de tampons AOF et de tampons de réécriture AOF.

    1. Tampon AOF

    Nous savons tous que même pour les disques SSD, sa vitesse de lecture et d'écriture est très différente de celle de la mémoire. Le tampon AOF est principalement défini par Redis pour résoudre le problème de synchronisation entre la vitesse d'exécution des commandes du processus principal et la vitesse d'écriture du disque. Le tampon AOF peut efficacement éviter la lecture et l'écriture fréquentes du disque dur, améliorant ainsi les performances. Lors de l'exécution de la persistance AOF, Redis écrira d'abord la commande dans le tampon AOF, puis l'écrira dans le fichier AOF du disque dur conformément à la politique de réécriture.

    Comment résoudre le débordement de tampon Redis

    Le débordement du tampon AOF peut être lié à la vitesse d'écriture du disque, ou il peut être lié à la stratégie de réécriture AOF lorsqu'un grand nombre de commandes sont en retard dans le tampon AOF et dépassent son seuil défini. , un débordement de tampon se produira. , pour éviter ce problème, nous pouvons le résoudre en ajustant la stratégie de réécriture ou en ajustant la taille du tampon AOF.

    2. Tampon de réécriture AOF

    Le tampon de réécriture AOF est le moment où Redis effectue une réécriture AOF dans le processus enfant. Lorsque le processus parent accepte une nouvelle commande, la commande sera écrite dans le tampon de réécriture AOF. la réécriture du processus est terminée, ajoutez la commande AOF rewrite buffer au nouveau fichier AOF.

    Comment résoudre le débordement de tampon Redis

    Le débordement du tampon de réécriture AOF est lié au nombre de commandes traitées par le processus principal lors de la réécriture AOF. Lorsque le processus principal Redis traite un grand nombre de commandes lors de la réécriture AOF, ces commandes seront écrites dans le fichier. Zone tampon de réécriture AOF, lorsque le seuil défini est dépassé, un débordement se produit.

    Pour éviter le débordement du tampon de réécriture AOF, nous pouvons également le résoudre en ajustant la taille du tampon de réécriture AOF.

    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 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 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 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 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.

    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é.

    See all articles