Maison  >  Article  >  base de données  >  Surveillance et gestion de la mémoire Redis

Surveillance et gestion de la mémoire Redis

齐天大圣
齐天大圣original
2020-05-25 14:10:321823parcourir

Toutes les données Redis sont stockées en mémoire, la surveillance et la gestion de la mémoire sont donc très importantes pour Redis. Parlons de la mémoire Redis sous trois aspects : la surveillance, la gestion et l'optimisation de la mémoire.

Surveillance de la mémoire

redis nous fournit la commande info memory pour afficher l'utilisation de la mémoire. Cette commande affiche beaucoup de données, nous n'examinons ici que certaines des plus importantes.

  • used_memory:1146648 (quantité de mémoire allouée par l'allocateur Redis)

  • used_memory_human:1,09M (affiché dans un format lisible)

  • used_memory_rss:4358144 (Mémoire totale occupée par redis)

  • used_memory_rss_human:4.16M (Affichage lisible de la mémoire totale occupée par redis)

  • used_memory_peak:1229448 (userd_memory_peak Peak)

  • used_memory_peak_human:1.17M

  • used_memory_overhead:857036 (tampon, mémoire occupée par arriéré, etc.)

  • used_memory_startup:791384 (mémoire consommée par le démarrage de Redis)

  • used_memory_dataset:289612 (mémoire occupée par les données Redis)

  • used_memory_lua:37888 (mémoire consommée par le script lua)

  • used_memory_lua_human:37.00K (affichage lisible)

  • mem_fragmentation_ratio : 4,02 (taux de fragmentation de la mémoire, used_memory_rss / used_memory)

Lorsque mem_fragmentation_ratio est supérieur à 1, cela indique qu'il y a une fragmentation de la mémoire. Plus la valeur est faible, plus elle est grave. le taux de fragmentation. Si l'application le permet, redis peut être redémarré pour réduire le taux de fragmentation. Lorsqu'il est inférieur à 0, il faut être très prudent, cela signifie que la mémoire n'est pas suffisante et qu'une partie du swap est utilisée.

Gestion de la mémoire

Il est généralement recommandé de définir une limite supérieure de mémoire pour Redis. Il existe deux façons de modifier maxmory

<.>

  • Modifier le fichier de configuration

  • Paramètres dynamiques

Ce qui suit montre les paramètres dynamiques

127.0.0.1:6379> config set maxmemory 1G
OK
127.0.0.1:6379> config rewrite
OK

Définir la mémoire maximale a deux fonctions. Premièrement, elle peut limiter la taille de la mémoire occupée par Redis pour l'empêcher de dépasser la taille de la mémoire physique. De plus, lorsque la mémoire maximale est définie et que Redis dépasse la mémoire maximale, la stratégie de recyclage de mémoire peut être déclenchée (généralement utilisée dans les scénarios de mise en cache)

Redis peut ajuster dynamiquement la mémoire maximale, ce qui est très utile lorsque le serveur mémoire Si cela ne suffit pas, vous devez augmenter la mémoire. Lorsque la mémoire du serveur augmente, ajustez dynamiquement la mémoire de Redis.

De plus, il existe plusieurs configurations de la politique de recyclage de la mémoire de Redis (maxmemory-policy). Deux mots apparaissent fréquemment, LRU et LFU, et leurs significations sont les suivantes :

    <.>Les moins récemment utilisés
  • Les moins fréquemment utilisés
  • Jetons un coup d'œil à toute la stratégie et à la signification du recyclage :

    noeviction : Politique par défaut, aucune clé ne sera supprimée Lorsque la mémoire maximale est dépassée, toute commande d'écriture sera rejetée et seules les commandes de lecture recevront une réponse
  • volatile. -lru : Supprimez les clés expirées selon l'algorithme lru. Si aucune clé ne peut être supprimée, revenez à la stratégie de non-expulsion.
  • allkeys-lru : Supprimez les clés selon l'algorithme lru, que la clé ait expiré ou non, jusqu'à ce que la mémoire occupée soit inférieure au maximum.
  • allkeys-lfu : a la même signification que ci-dessus, mais utilise l'algorithme lfu pour supprimer.
  • allkeys-random : supprimez aléatoirement les clés lorsque la mémoire maximale est atteinte.
  • volatile-ttl : supprime les clés qui sont sur le point d'expirer. Sinon, revenez à la non-expulsion.

Optimisation de la mémoireLa stratégie de recyclage Redis mentionnée ci-dessus, c'est une stratégie de suppression passive, nous pouvons supprimer activement ce Clés qui n'ont pas été consultées depuis longtemps. Vous pouvez utiliser l'analyse pour parcourir les clés, puis utiliser l'objet ideltime pour afficher le temps d'inactivité des clés et supprimer les clés qui n'ont pas été consultées depuis longtemps.

De plus, les objets clé-valeur peuvent également être réduits pour réduire l'utilisation de la mémoire.

127.0.0.1:6379> scan 0
1) "272"
2)  1) "story:course:3915"
    2) "story:course:1681"
    3) "story:course:4982"
……

Par exemple, la clé ci-dessus peut être modifiée en : sy:cos:id pour réduire la longueur de la clé. Pour les valeurs , des techniques de compression peuvent être utilisées pour réduire la longueur de la valeur. (La compression augmentera la pression sur le CPU et pourra être appliquée de manière appropriée en fonction des applications spécifiques)

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