Maison  >  Article  >  base de données  >  Comment définir la période de validité de la clé dans Redis

Comment définir la période de validité de la clé dans Redis

WBOY
WBOYavant
2023-05-28 19:29:483894parcourir

redis définit la période de validité de la clé

Key command

Définissez le délai d'expiration de la clé.

Requête de toutes les clés actuelles

Comment définir la période de validité de la clé dans Redis

  • expire key second : Définir l'expiration de la key Time

Comment définir la période de validité de la clé dans Redis

Si la touche ttl est exécutée et que l'affichage est -2, cela signifie que la valeur modifiée ne n'existe pas dans le cache

# 🎜🎜#

Comment définir la période de validité de la clé dans Redis

S'il est affiché comme -1, il est persistant (n'expirera pas)

#🎜🎜 #

Comment définir la période de validité de la clé dans RedisSi Si vous définissez le délai d'expiration, le délai d'expiration restant sera affiché

Version de départ : 1.0.0

Complexité temporelle : O(1)Comment définir la période de validité de la clé dans Redis

Valeur de retour : 1 si le délai d'expiration est défini avec succès ; 0 Si la clé n'existe pas ou si le délai d'expiration ne peut pas être défini.

Définissez le temps de survie pour une clé donnée Lorsque la clé expire (le temps de survie est de 0), elle sera automatiquement supprimée.

1. Le délai d'expiration suit la clé et n'a rien à voir avec la valeur

Dans Redis, les clés avec délai d'expiration sont appelées "clés volatiles". Le délai d'expiration peut être supprimé en supprimant la clé entière à l'aide de la commande DEL, ou écrasé par les commandes SET et GETSET. Cela signifie que si une commande modifie uniquement la valeur d'une clé avec un délai d'expiration au lieu de l'utiliser, vous la remplacez par. une nouvelle valeur de clé, le délai d'expiration ne sera pas modifié. Par exemple, exécuter la commande INCR sur une clé, exécuter la commande LPUSH sur une liste ou exécuter la commande HSET sur une table de hachage ne modifiera pas le délai d'expiration de la clé elle-même.

2. Définissez la période de validité permanente

Utilisez la commande PERSIST pour effacer le délai d'attente et en faire une clé permanente.

3. L'impact de la commande rename sur la période de validité

Si la clé est modifiée par la commande RENAME, le timeout associé sera transféré sur la nouvelle clé.

Si la clé est modifiée par la commande RENAME, par exemple, Key_A existe à l'origine, puis la commande RENAME Key_B Key_A est appelée à ce moment, que la Key_A d'origine soit permanente ou définie sur. timeout, il sera écrasé par le statut de la période de validité de Key_B.

4. Actualiser l'heure d'expiration

Exécuter l'opération EXPIRE sur une clé qui a déjà une heure d'expiration mettra à jour son heure d'expiration.

5. Précision de l'expiration

Dans Redis 2.4 et les versions précédentes, le délai d'expiration peut ne pas être très précis, avec une erreur de 0 à 1 seconde.

À partir de Redis 2.6, l'erreur de délai d'expiration est réduite à 0-1 milliseconde.

6. Impact des facteurs externes sur le délai d'expiration

Depuis la version 2.6 de Redis, le délai d'expiration des clés est stocké en millisecondes à l'aide des horodatages Unix. Cela signifie que le temps continue de passer même si l'instance Redis n'est pas disponible.

Pour bien gérer les travaux expirés, l'ordinateur doit utiliser une heure stable. Quelque chose d'intéressant se produit lorsque vous synchronisez un fichier RDB entre deux ordinateurs dont les heures ne sont pas synchronisées : toutes les clés expirent au chargement.

Même une instance en cours d'exécution vérifiera l'horloge de l'ordinateur. Par exemple, si vous définissez la période de validité d'une clé sur 1 000 secondes, puis définissez l'heure de votre ordinateur sur 2 000 secondes dans le futur, la clé le fera. expirer immédiatement, au lieu d’attendre après 1 000 secondes.

7. Comment Redis élimine les clés expirées

Il existe deux manières pour les clés Redis d'expirer : passive et active.

Lorsque certains clients tentent d'y accéder, la clé sera découverte et activement expirée.

Bien sûr, cela ne suffit pas, car certaines clés expirées ne seront jamais accessibles. Afin de garantir que les clés expirent dans un délai prédéterminé, des tests aléatoires doivent être effectués régulièrement et le délai d'expiration doit être défini. Toutes ces clés expirées seront supprimées.

Plus précisément, ce que Redis fait 10 fois par seconde :

1). Testez 20 clés aléatoires pour la détection d'expiration associée.

2). Supprimez toutes les clés expirées.

3). Si plus de 25 % des clés expirent, répétez l'étape 1.

Il s'agit d'un algorithme de probabilité trivial. L'hypothèse de base est que notre échantillon est cette clé. contrôle, et nous répétons la détection d'expiration jusqu'à ce que le pourcentage de clés expirées tombe en dessous de 25 %, ce qui signifie qu'à tout moment, au plus 1/4 des clés expirées seront effacées.

8. Comment gérer l'expiration lors de la copie de fichiers AOF

Afin d'obtenir le comportement correct sans sacrifier la cohérence, lorsqu'une clé expire, DEL sera accompagné du texte AOF Synthétisé sur tous les esclaves attachés. Cette approche est centralisée au sein de l'instance maître et élimine la possibilité d'erreurs de cohérence.

Cependant, lorsque les esclaves sont connectés au maître, les clés n'expireront pas indépendamment (attendront que le maître exécute la commande DEL), elles existeront toujours dans l'ensemble de données, donc lorsque l'esclave est élu comme maître, les clés seront éliminées. Il sera exécuté indépendamment puis deviendra maître.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer