Maison >base de données >Redis >paramètres d'expiration de la clé Redis

paramètres d'expiration de la clé Redis

尚
avant
2020-05-21 09:10:374147parcourir

paramètres d'expiration de la clé Redis

EXPIRE key seconds

est utilisé pour définir un délai d'expiration pour une clé. Le deuxième paramètre indique combien de secondes s'écouleront avant l'expiration de la clé. Après l'expiration d'une clé, la clé sera automatiquement supprimée. Dans la terminologie Redis, les clés avec délai d'expiration sont souvent appelées volatiles.

Lors de l'utilisation d'opérations de suppression ou d'écrasement sur cette clé, le délai d'expiration sera effacé. Ces opérations incluent DEL, SET, GETSET et toutes les commandes *STORE. Les commandes qui modifient la valeur de la clé ne modifieront pas le délai d'expiration, telles que IINCR pour modifier la valeur, LPUSH pour ajouter une nouvelle valeur à la file d'attente et HSET pour modifier les membres de la table de hachage.

Si vous souhaitez simplement effacer le délai d'expiration, vous pouvez appeler la commande PERSIST afin que la clé n'expire pas. Le délai d'expiration est un attribut de la clé et ne changera pas en raison de la modification du nom de la clé (RENAME). Lorsque RENAME est utilisé pour écraser d'autres clés, seul un effet d'écrasement est passé et la clé renommée conservera toujours son délai d'expiration.

Remarque : appeler la commande EXPIRE/PEXPIRE avec un nombre non positif sur une clé, ou appeler EXPIREAT/PEXPIREAT avec une heure passée supprimera directement la clé.

Mettre à jour le délai d'expiration

Appeler EXPIRE sur une clé avec un délai d'expiration peut mettre à jour le délai d'expiration de cette clé.

Valeur de retour

Les secondes de la touche Call EXPIRE renverront 0 ou 1, 0 signifie que la clé n'existe pas, 1 signifie que la clé a été définie sur un délai d'attente.

Comment Redis gère les clés avec délai d'expiration

Clés avec délai d'expiration

Dans des circonstances normales, redis La clé existe jusqu'à la clé est explicitement supprimée (via la commande DEL) ou effacée en raison de contraintes de mémoire. La définition d'un délai d'expiration pour une clé nécessite de la mémoire supplémentaire pour enregistrer les informations pertinentes. Redis garantira que la clé sera supprimée à son expiration.

Précision du délai d'expiration

À partir de redis2.6, l'écart du délai d'expiration est compris entre 0 et 1 milliseconde.

Logique du délai d'expiration

Le délai d'expiration de la clé utilise l'horodatage absolu Unix (avec des millisecondes comme précision même si l'instance Redis est fermée, jusqu'à cela). Heure Unix Si vous la tapez, la clé expirera également (elle ne sera tout simplement pas effacée immédiatement).

Si vous souhaitez déplacer des données d'un Redis vers un autre Redis sur un autre ordinateur en déplaçant des fichiers RDB, vous devez vous assurer que les horodatages absolus Unix des deux ordinateurs sont cohérents.

Si vous définissez une heure d'expiration pour une clé, ne modifiez pas l'heure de votre ordinateur avec désinvolture, car redis vérifiera souvent l'heure du système. Si vous ajustez l'heure en avant, les clés qui devraient expirer n'expireront pas. Si vous ajustez l'heure en arrière, les clés expireront alors qu'elles ne devraient pas expirer.

Comment Redis nettoie les clés expirées :

Redis nettoie les clés expirées de deux manières : nettoyage passif et nettoyage actif.

(1) Nettoyage passif : lors de l'accès à une clé avec un délai d'expiration, s'il s'avère que la clé a expiré, la clé sera effacée.

(2) redis effectuera 10 vérifications par seconde, chaque vérification comprend :

  • Sélectionnez au hasard 20 clés avec un délai d'expiration, puis supprimez-les Toutes les clés expirées.

  • Si plus de 25% des clés parmi ces 20 ont expiré, alors effectuez à nouveau l'étape 1).

Il s'agit d'un algorithme probabiliste simple, nous supposons que la clé sélectionnée peut être utilisée comme échantillon de toutes les clés avec un délai d'expiration. Grâce aux opérations ci-dessus, nous pouvons essentiellement déterminer que le rapport entre les clés expirées et les clés avec des délais d'attente est inférieur à 25 %. Ensuite, l'excès de mémoire occupé par les clés expirées qui n'ont pas été nettoyées devrait être inférieur à 25 %.

Comment gérer le nettoyage d'expiration dans les fichiers de réplication et AOF

Afin de ne pas détruire la cohérence, lorsqu'une clé expire et est nettoyée, l'opération DEL sera synchronisée avec le fichier AOF et toutes les répliques nœuds. De cette façon, le nœud maître est responsable de l'opération de nettoyage d'expiration. Le nœud esclave ne traitera pas le nettoyage d'expiration des clés, mais attendra uniquement la commande DEL du nœud maître, afin que les espaces de clés du nœud maître et le nœud esclave restera cohérent.

Pour plus de connaissances sur Redis, veuillez faire attention à la colonne Tutoriel d'introduction à 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer