sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo caducan las claves de redis?

En resumen, para cada objeto Redis, hay un tiempo de vencimiento. A menos que configure el objeto para que caduque, ese tiempo es "nunca".

Ahora, el mecanismo de caducidad en sí mismo es semiperezoso. La caducidad diferida significa que en realidad no caducan los objetos hasta que se leen. Cuando leemos un objeto, verificamos su marca de tiempo de caducidad, y si está en el pasado, no devolvemos nada y eliminamos el objeto mientras estamos en eso. Pero el problema es que si nunca se toca una tecla, ocupa memoria sin motivo alguno.

Entonces, Redis agrega una segunda capa de vencimiento activo aleatorio. Simplemente lee claves aleatorias todo el tiempo, y cuando se toca una clave caducada, se elimina según el mecanismo perezoso. Esto no afecta el comportamiento de caducidad, solo agrega "recolección de basura" de claves caducadas.

Por supuesto, la implementación real es más complicada que esto, pero esta es la idea principal.

Puede leer más sobre esto aquí:http://redis.io/commands/expire

Y el código fuente para el ciclo de vencimiento activo se puede encontrar aquí:https://github.com/antirez/redis/blob/a92921da135e38eedd89138e15fe9fd1ffdd9b48/src/expire.c#L98