Maison > Article > base de données > Politique de suppression et politique d'expulsion Redis
❝Points de connaissances dans cet article Concept de données expirées Politique de suppression des données Algorithme d'expulsion
❞
❝Kaka a compilé une feuille de route pour créer un guide d'entretien et s'est préparé à écrire des articles selon cette feuille de route. Plus tard, j'ai découvert que j'ajoutais des points de connaissances qui n'étaient pas complétés. J'attends également avec impatience que vos partenaires se joignent à nous pour nous aider à apporter leur aide. Rendez-vous dans la section commentaires !
❞
Regardons d'abord les trois valeurs clés, à savoir le sexe, le nom et l'âge.
Les instructions pour définir ces trois valeurs sont set name kaka setex age 100 24 setex sex 10 1
Dans Redis, nous pouvons utiliser ttl pour obtenir l'état d'une certaine clé. Utilisons ttl
pour obtenir le nom ci-dessus. respectivement. , âge, statut de sexe
peut voir trois valeurs, qui sont -1 775 -2
Alors quelle est l'information donnée par ces trois valeurs !
setex age 1000 24
, qui est exprimée comme le reste temps de validité La suppression programmée consiste à écrire une minuterie, puis à l'utiliser comme la clé Une fois le délai écoulé, la tâche de minuterie supprime immédiatement la clé expirée
Avantages : Il est concevable que la clé soit supprimée à son expiration. C'est certainement la plus conviviale en matière de mémoire et économise de la mémoire
.Inconvénients : La fonctionnalité monothread de redis est que toutes les commandes sont exécutées dans un certain ordre. Supprimer la valeur de la clé à son expiration exercera plus de pression sur le processeur, ce qui affectera directement le temps de réponse du serveur Redis et les IO
La suppression régulière signifie utiliser le temps en échange d'espace
Une fois la suppression programmée terminée, les données correspondant à la valeur clé seront supprimées et la zone mémoire expirée sera également supprimée directement.
En regardant cette image, lorsque la valeur de la clé expirera, elle ne sera plus supprimé directement. Quand sera-t-il supprimé ? Continuer la lecture
Lorsque nous utilisons la suppression paresseuse, les données ne seront pas automatiquement supprimées à leur expiration. Ensuite, leur méthode de suppression consiste à porter un jugement la prochaine fois que la valeur clé sera obtenue. la clé a expiré et supprimez-la si elle expire.
C'est-à-dire que lorsque get name est à nouveau exécuté, une fonction sera exécutée expirelfNeeded()
Cette fonction consiste à déterminer si la clé a expiré. Renvoie zéro une fois expiré, puis supprime-le de la mémoire
Avantages : Cela réduira une certaine quantité de performances du processeur et ne sera supprimé que lorsqu'il est nécessaire de le supprimer
Inconvénients : C'est certainement le cas. La pression sur la mémoire est élevée, comme certaines actualités brûlantes, une fois le point chaud passé, presque personne n'y accède. Si personne n'accède à la clé, elle existera toujours, ce qui occupera une certaine place. quantité d'espace mémoire pendant une longue période
En d'autres termes, cette méthode Il s'agit d'échanger de l'espace contre du temps
Nous avons mentionné deux méthodes de suppression ci-dessus, l'une est la suppression planifiée et l'autre est la suppression différée. La première consiste à échanger de l’espace contre du temps. La première consiste à échanger du temps contre de l’espace. Les deux options sont des méthodes relativement extrêmes. Jetons ensuite un coup d'œil au plan de mise en œuvre pour une suppression régulière.
Jetons d'abord un coup d'œil à l'espace de stockage de redis. Le numéro par défaut est 16. Il existe une base de données de paramètres de configuration dans redis.conf qui est contrôlée par ce paramètre. Chaque base de données possède sa propre partition d'expiration, qui stocke l'adresse des données et le délai d'expiration des données.
Méthode d'implémentation
Lorsque Redis démarre, il lira la valeur Hz sous le serveur et la valeur par défaut est 10. Cette valeur peut être visualisée directement en utilisant info server
sur le terminal
puis le serveur sera exécuté hz fois par seconde pour l'interrogation serverCron()
Continuez à utiliser bases de donnéesCron pour redis Les 16 bibliothèques accèdent aux informations une par une
Lors de l'accès, activeExpireCycel sera exécuté pour détecter chaque expiration[*] une par une. Le temps d'exécution de chacune est de 250 ms/serveur hz
.est présent Lorsque chaque expiration[*] est testée une par une, ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC sera sélectionnée au hasard pour les tests
Maintenant le problème vient, notre temps 250ms/hz a été exécuté, mais que devons-nous faire si les 16 bases de données de les expirations n'ont pas été parcourues ! Quelle bibliothèque vais-je parcourir la prochaine fois ? En fait, cette valeur existe, c'est la valeur de current_db. Cette valeur sera enregistrée dans activeExpireCycel la prochaine fois que vous saisirez expires[*] pour exécuter Fonction 1 : Il n'y a pas de valeur de pointe élevée dans l'utilisation du processeur et la fréquence de détection est personnalisée La mémoire sera continuellement nettoyée
Maintenant que notre redis utilise suffisamment de mémoire, nous allons utiliser la politique d'expulsion pour garantir l'utilisation normale de redis.
Redis appellera freeMemorylfNeeded() pour vérifier si la mémoire est suffisante avant l'exécution de chaque commande. Lorsqu'elle est insuffisante, certaines clés seront effacées. Cette stratégie d'effacement des données est appelée stratégie d'expulsion.
Le paramètre de mémoire maximale utilisable de redis est : maxmemory. La valeur par défaut est 0, qui fait référence à la proportion de mémoire physique occupée. Généralement, le définir sur 50 % est suffisant.
Sélectionnez le. nombre de clés à supprimer à chaque fois : maxmemory-samples
Stratégie de suppression : maxmemory-policy
"Concentrons-nous sur la stratégie de suppression"
Regardez ensuite une image
9s C'est l'heure actuelle
La clé la plus longue à 9 secondes est l'âge
utiliser La clé la moins fréquente est le genre
Si vous suivez volatile-lru , l'âge sera supprimé
Si vous suivez volatile-lfu, le sexe sera supprimé
Détecter toutes les données
Abandonner l'expulsion des données
Ce qui précède est le paire redis Politique de suppression de données et politique d'expulsion.
Une chose à noter ici est que dans la politique d'expulsion, les données volatiles font référence à la clé avec un délai d'expiration défini et ne constituent pas une valeur permanente.
L'ensemble de la base de données fait référence à toutes les valeurs, avec délai d'expiration et ensemble de données permanent.
❝La persévérance dans l'apprentissage, la persévérance dans les blogs et la persévérance dans le partage sont les convictions auxquelles Kaka adhère depuis sa carrière. J'espère que les articles de Kaka dans l'immense Internet. peut vous apporter un peu Rendez-vous dans le prochain numéro
❞
Recommandé : "tutoriel redis"
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!