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

Número de chaves expiradas listadas pelo comando info no redis slave não consistente com o que vejo


expires contém chaves existentes com TTL que expirarão, não incluindo chaves já expiradas.Exemplo (com omissão de informações extras de info comando para brevidade):
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> SETEX mykey1 1000 "1"
OK
127.0.0.1:6379> SETEX mykey2 1000 "2"
OK
127.0.0.1:6379> SETEX mykey3 1000 "3"
OK
127.0.0.1:6379> info
# Keyspace
db0:keys=3,expires=3,avg_ttl=992766
127.0.0.1:6379> SETEX mykey4 1 "4"
OK
127.0.0.1:6379> SETEX mykey5 1 "5"
OK
127.0.0.1:6379> info
# Keyspace
db0:keys=3,expires=3,avg_ttl=969898
127.0.0.1:6379> keys *
1) "mykey2"
2) "mykey3"
3) "mykey1"
127.0.0.1:6379> 

Dado que, na sua situação, você está perguntando sobre a expiração da chave nos escravos, por https://github.com/antirez/redis/issues/2861:

as chaves em um escravo não expiram ativamente e, portanto, o avg_ttl nunca é calculado

E por https://groups.google.com/forum/#!topic/redis-db/NFTpdmpOPnc:

avg_ttl nunca é inicializado em um escravo e, portanto, pode ser qualquer valor arbitrário que resida na memória naquele local.

Assim, é de se esperar que o info comando se comporta de forma diferente em escravos.