Maison > Article > base de données > Politique de suppression et politique d'expulsion Redis
Points de connaissance de cet article
Concept de données expirées
Stratégie de suppression des données
Algorithme d'expulsion
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 le statut d'une certaine clé. Utilisons ttl
pour obtenir respectivement le statut du nom, de l'âge et du sexe
Alors quelles informations donnent ces trois valeurs !
setex age 1000 24
, exprimée comme Le temps de validité restant La suppression programmée consiste à écrire une minuterie, puis lorsque le temps de clé expire, la tâche de minuterie supprimera immédiatement la clé expirée
Avantages : Vous pouvez imaginer que la clé sera supprimée à son expiration. C'est certainement la plus conviviale en matière de mémoire et économise la mémoire
Lorsque nous utilisons la suppression différée, les données ne seront pas supprimées automatiquement après leur expiration, leur méthode de suppression est donc , la prochaine fois que la valeur de la clé sera obtenue, un jugement sera effectué pour déterminer si la clé a expiré. Si elle a expiré, elle sera supprimée.
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 un certain montant des performances du processeur. Il ne sera supprimé que lorsqu'il sera nécessaire de supprimer
Inconvénients : Il faut que la pression de la mémoire soit élevée, comme certaines actualités brûlantes, après le le point chaud est terminé, presque personne n'y accédera. Cette clé existera toujours si personne n'y accède, et elle occupera une certaine quantité d'espace mémoire pendant longtemps
En d'autres termes, cette méthode consiste à é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. Il y en a 16 par défaut. 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
redis démarre Quand, la valeur de Hz sous le serveur sera lue, et la valeur par défaut est 10. Cette valeur est consultable directement dans le terminal en utilisant info server
vers
Ensuite, le serveur sera exécuté Hz fois par seconde pour l'interrogation serverCron()
Continuer à utiliser bases de donnéesCron pour accéder aux informations de 16 bibliothèques redis une par une
Pendant l'accès, activeExpireCycel sera exécuté pour détecter chacune des expirations[*] une par une. l'exécution est le paramètre 250 ms/serveur hz
Lors du test de chaque expiration[*] un par un, ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC sera choisi au hasard pour les tests
Alors vient maintenant le problème, notre 250 ms/hz a été exécuté à ce moment-là, mais que dois-je faire si les 16 bases de données d'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 enregistrera activeExpireCycel et l'exécutera la prochaine fois que vous saisirez expires[*]
Fonction 1 : Pas de pics élevés d'utilisation du processeur, paramètres personnalisés pour la fréquence de détection
Fonction 2 : La pression mémoire ne sera pas très élevée, et la mémoire occupée depuis longtemps sera continuellement nettoyée
Nous avons mentionné trois stratégies de suppression ci-dessus, mais ces trois stratégies ne sont efficaces que par rapport à la clé avec une période de validité fixée.
Maintenant que notre redis utilise une mémoire insuffisante, nous utiliserons 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. s’appelle la politique d’expulsion.
Le paramètre de la mémoire maximale utilisable de redis est : maxmemory La valeur par défaut est 0. Il fait référence à la proportion de mémoire physique occupée. ça suffit
Sélectionnez le nombre de clés à supprimer à chaque fois : maxmemory-samples
Politique de suppression : maxmemory-policy
Concentrons-nous sur la stratégie de suppression
Ce qui précède est la stratégie de suppression et la stratégie d'expulsion de Redis pour les données .
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.
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!