Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

minhas chaves redis não expiram


Como você está fazendo um '...' é difícil dizer com certeza, mas eu diria que você está configurando mykey durante essa parte, o que efetivamente removerá a expiração.

Do manual EXPIRE

O tempo limite é limpo somente quando a chave é removida usando o comando DEL ou substituída usando os comandos SET ou GETSET

Além disso, em relação à resposta -1 do TTL

Valor de retorno

Resposta inteira:TTL em segundos ou -1 quando a chave não existe ou não tem tempo limite.

EDIT:Observe que esse comportamento mudou no Redis 2.8

A partir do Redis 2.8 o valor de retorno em caso de erro foi alterado:
O comando retorna -2 se a chave não existir.
O comando retorna -1 se a chave existe mas não tem expiração associada.

Em outras palavras, se sua chave existe, ela parece ser persistente, ou seja, não tem nenhuma expiração definida.

EDIT:Parece que posso reproduzir isso se eu criar a chave em um servidor escravo REDIS, o escravo não excluirá a chave sem entrada mestre, pois normalmente você não criaria chaves localmente em um escravo. É este o caso aqui?

Porém enquanto os slaves conectados a um master não irão expirar as chaves de forma independente (mas irão aguardar o DEL vindo do master), eles ainda irão pegar o estado completo dos expires existentes no dataset, então quando um slave for eleito para master ele será capaz de expirar as chaves de forma independente, atuando totalmente como um mestre.