Redis
 sql >> Base de données >  >> NoSQL >> Redis

Le nombre de clés expirantes répertoriées par la commande info sur l'esclave redis ne correspond pas à ce que je vois

expires contient des clés existantes avec TTL qui expireront, à l'exclusion des clés déjà expirées.Exemple (avec omission d'informations supplémentaires de info commande pour plus de concision ):

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> 

Étant donné que dans votre situation, vous posez des questions sur l'expiration de la clé sur les esclaves, par https://github.com/antirez/redis/issues/2861 :

les clés d'un esclave n'ont pas expiré activement, et donc l'avg_ttl n'est jamais calculé

Et selon https://groups.google.com/forum/#!topic/redis-db/NFTpdmpOPnc :

avg_ttl n'est jamais initialisé sur un esclave et il peut donc s'agir de la valeur arbitraire résidant en mémoire à cet endroit.

Ainsi, il faut s'attendre à ce que les info la commande se comporte différemment sur les esclaves.