Maison >base de données >Redis >Analyse principale des paramètres de survie et d'expiration de Redis
Apprentissage recommandé : Tutoriel vidéo Redis
Grâce à la commande EXPIRE ou à la commande PEXPIRE, le client peut définir la survie d'une certaine clé dans le base de données avec une précision en secondes ou en millisecondes Après le nombre spécifié de secondes ou de millisecondes, le serveur supprimera automatiquement les clés avec une durée de vie de 0.
La commande SETEX peut définir le délai d'expiration de la clé tout en définissant une clé de chaîne (ne peut être utilisée que pour les clés de chaîne)
Similaire à la commande EXPIRE et à la commande PEXPIRE, le client peut utiliser la commande EXPIREAT ou la commande PEXPIREAT , Définissez le délai d'expiration d'une clé dans la base de données avec une précision en secondes ou en millisecondes
Le délai d'expiration est un horodatage UNIX Lorsque l'heure d'expiration de la clé arrive, le serveur supprimera automatiquement la clé de la base de données
. Commande TTL La commande PTTL accepte une clé avec une durée de vie ou un délai d'expiration et renvoie la durée de vie restante de la clé, c'est-à-dire combien de temps il faudra avant que la clé soit automatiquement supprimée par le serveur
Redis en a quatre différent La commande peut être utilisée pour définir la durée de vie de la clé (combien de temps la clé peut exister) ou le délai d'expiration (quand la clé sera supprimée) :
Bien qu'il existe de nombreuses unités différentes et différentes formes de commandes de configuration, en fait, les trois commandes EXPIRE, PEXPIRE et EXPIREAT sont toutes implémentées à l'aide de la commande PEXPIREAT :
Peu importe si le client exécute les quatre ci-dessus Quelle que soit la commande convertie, l'effet final de l'exécution sera le même que celui de l'exécution de la commande PEXPIREAT.
Le dictionnaire expire de la structure redisDb enregistre le délai d'expiration de toutes les clés de la base de données. Nous appelons ce dictionnaire le dictionnaire expire
La clé du dictionnaire expire est un pointeur qui pointe vers un objet clé dans le. espace clé (c'est également une clé de base de données).
La valeur du dictionnaire d'expiration est un entier de type long long. Cet entier stocke l'heure d'expiration de la clé de base de données pointée par la clé - un horodatage UNIX avec une précision à la milliseconde.
La figure suivante montre un exemple de base de données avec un dictionnaire d'expiration. Dans cet exemple, l'espace clé enregistre toutes les paires clé-valeur dans la base de données et le dictionnaire d'expiration enregistre l'heure d'expiration de la clé de base de données.
Pour faciliter l'affichage, l'objet clé alphabétique et l'objet clé de livre sont répétés deux fois dans l'espace clé et le dictionnaire d'expiration de la figure. En pratique, les clés de l'espace clé et les clés du dictionnaire d'expiration pointent vers le même objet clé, il n'y aura donc pas d'objets en double et aucun espace ne sera gaspillé.
Le dictionnaire d'expiration dans la figure enregistre deux paires clé-valeur :
La clé de la première paire clé-valeur est l'objet clé alphabétique et la valeur est 1385877600000, ce qui signifie que le délai d'expiration de l'alphabet clé de la base de données est 1385877600000 (0h00 le 1er décembre 2013).
La clé de la deuxième paire clé-valeur est l'objet clé du livre et la valeur est 1388556000000, ce qui signifie que l'heure d'expiration du livre de clés de la base de données est 1388556000000 (0h00 le 1er janvier 2014). Lorsque le client exécute la commande PEXPIREAT (ou trois autres commandes converties en commandes PEXPIREAT) pour définir un délai d'expiration pour une clé de base de données, le serveur associe la clé de base de données donnée et le délai d'expiration dans le dictionnaire d'expiration de la base de données.
Après que le serveur exécute la commande suivante
Le dictionnaire d'expiration ajoutera une paire clé-valeur, où la clé est l'objet clé du message et la valeur est 1391234400000 (0h00 le 1er février 2014), comme le montre la figure
Le voici le pseudo code de la commande PEXPIREAT Définition du code
La commande PERSIST permet de supprimer le délai d'expiration d'une clé
La commande PERSIST est l'opération inverse de la commande PEXPIREAT : la commande PERSIST recherche le clé donnée dans le dictionnaire d'expiration et libère l'association clé et valeur (délai d'expiration) dans le dictionnaire d'expiration.
Avec le dictionnaire d'expiration, le programme peut utiliser les étapes suivantes pour vérifier si une clé donnée a expiré :
1) Vérifiez si la clé donnée existe dans le dictionnaire d'expiration : Si elle existe, alors obtenez le délai d'expiration de la clé.
2) Vérifiez si l'horodatage UNIX actuel est supérieur au délai d'expiration de la clé : si c'est le cas, alors la clé a expiré sinon, la clé n'a pas expiré ; Ce processus peut être décrit avec un pseudocode :
Pour un alphabet clé avec une heure d'expiration de 1385877600000 (0h00 le 1er décembre 2013) :
Si l'heure actuelle est 1383282000000 (1er novembre 2013) jour zéro ), puis l'appel de is_expired(alphabet) renverra False car l'heure actuelle est inférieure au délai d'expiration de la touche alphabétique.
D'un autre côté, si l'heure actuelle est 1385964000000 (0h00 le 2 décembre 2013), alors l'appel de is_expired(alphabet) renverra True car l'heure actuelle est supérieure au délai d'expiration de la touche alphabétique.
Apprentissage recommandé : Tutoriel vidéo 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!