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

mis claves redis no caducan

Dado que está haciendo un '...', es difícil decirlo con certeza, pero diría que está configurando mykey durante esa parte, lo que eliminará efectivamente la caducidad.

Del manual EXPIRE

El tiempo de espera se elimina solo cuando la clave se elimina con el comando DEL o se sobrescribe con los comandos SET o GETSET

Además, con respecto a la respuesta -1 de TTL

Valor devuelto

Respuesta entera:TTL en segundos o -1 cuando la clave no existe o no tiene tiempo de espera.

EDITAR:tenga en cuenta que este comportamiento cambió en Redis 2.8

A partir de Redis 2.8, el valor devuelto en caso de error cambió:
El comando devuelve -2 si la clave no existe.
El comando devuelve -1 si la clave existe pero no tiene caducidad asociada.

En otras palabras, si su clave existe, parecería ser persistente, es decir, no tener ningún vencimiento establecido.

EDITAR:Parece que puedo reproducir esto si creo la clave en un servidor esclavo de REDIS, el esclavo no eliminará la clave sin la entrada del maestro, ya que normalmente no crearía claves localmente en un esclavo. ¿Es este el caso aquí?

Sin embargo, aunque los esclavos conectados a un maestro no expirarán las claves de forma independiente (sino que esperarán a que el DEL provenga del maestro), seguirán tomando el estado completo de las expiraciones existentes en el conjunto de datos, por lo que cuando se elige un esclavo como maestro, podrá caducar las claves de forma independiente, actuando completamente como un maestro.