Stratégie de suppression et stratégie d'élimination de Redis

1. Stratégie de suppression

La politique de suppression est la politique de traitement des données expirées.

Quelles stratégies de suppression existe-t-il lors de la suppression de données expirées ?

  • 1. Supprimer en temps opportun
  • 2. Suppression paresseuse
  • 3. Supprimer périodiquement

 1. Supprimer immédiatement

Lorsque la clé est définie avec un délai d'expiration et lorsque le délai d'expiration arrive, la tâche du minuteur exécute immédiatement l'opération de suppression sur la clé.

  • Avantages : économisez de la mémoire, supprimez-la le moment venu et libérez rapidement l'utilisation inutile de la mémoire
  • Inconvénients : la pression du CPU est très élevée, quelle que soit la charge du CPU à ce moment, elle occupera le CPU, ce qui affectera le temps de réponse et le débit des instructions du serveur redis
  • Résumé : Échangez les performances du processeur contre l'espace de stockage (temps d'échange contre l'espace)

 2. Suppression paresseuse

Les données atteignent l'heure d'expiration et ne sont pas traitées. Lors de l'accès aux données la prochaine fois, jugez
1. Si elles n'ont pas expiré, renvoyez les données
2. S'il s'avère qu'elles ont expiré, supprimez-les et le retour n'existe pas

  • Avantages : sauvegarde des performances CPU, suppression uniquement lorsqu'il s'avère qu'il doit être supprimé
  • Inconvénients : la pression mémoire est très élevée, et les données qui occupent longtemps la mémoire apparaissent
  • Résumé : Échangez l'espace de stockage contre les performances du processeur (échangez l'espace contre le temps)

3. Supprimer périodiquement 

  • Lorsque Redis démarre l'initialisation du serveur, lisez la valeur de configuration server.hz, la valeur par défaut est 10

  • Exécutez server.hz ​​​​fois serverCron() --------> databasesCron() ---------> activeExpireCycle() toutes les secondes

  • activeExpireCycle() détecte chaque librairie redis une par une, et le temps passé à chaque exécution : 250ms/server.hz

  • Lors de la détection d'une bibliothèque, sélectionnez au hasard les touches W pour la détection

        (1) Si la clé expire, supprimez la clé

        (2) Si le nombre de clés supprimées en un tour est> W * 25%, faites un cycle du processus

        (3) Si le nombre de clés supprimées en un tour est ≤ W 25%, vérifiez la bibliothèque suivante et faites un cycle entre 0 et 15 bibliothèques

           Valeur W = valeur d'attribut ACTIVE EXPIRE CYCLE_LOOKUPS PER LOOP

2. Stratégie d'élimination

Lorsque de nouvelles données entrent dans redis, si la mémoire est insuffisante, le mécanisme d'élimination sera déclenché.

Les configurations pertinentes qui affectent l'élimination des données sont les suivantes :

1 : La mémoire maximale disponible, c'est-à-dire la proportion de mémoire physique occupée, la valeur par défaut est 0, ce qui signifie aucune limite. Dans l'environnement de production, il est défini en fonction de la demande, généralement fixé à plus de 50 %

properties maxmemory ?mb

2: Sélectionnez le nombre de données à supprimer à chaque fois et utilisez la méthode d'obtention aléatoire des données comme données à détecter et à supprimer

properties maxmemory-samples count

3 : Stratégie de sélection pour la suppression des données

properties maxmemory-policy policy

数据淘汰的策略一共有3种:

1. Détecter les données volatiles (données avec un délai d'expiration défini)

volatile-lru : sélectionnez les données les plus récemment utilisées à éliminer
volatile-lfu : sélectionnez les données les moins récemment utilisées à éliminer
volatile-ttl : sélectionnez les données qui sont sur le point d'expirer à éliminer
volatile-random : choisissez les données à éliminer

2. Vérifiez l'ensemble des données de la base de données

allkeys-lru : sélectionnez les données avec le temps d'utilisation le plus récent pour éliminer
allkeLyRs-lfu : sélectionnez les données avec le temps d'utilisation le moins récent
pour éliminer

3. Renoncer à l'expulsion des données

no-enviction (eviction) : interdit l'expulsion des données (la politique par défaut dans redis4.0), ce qui entraînera OOM (Out Of Memory)

おすすめ

転載: blog.csdn.net/u012758488/article/details/129730770