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

El número de claves que caducan enumeradas por el comando de información en el esclavo redis no es consistente con lo que veo

expires contiene claves existentes con TTL que caducan, sin incluir claves ya caducadas. Ejemplo (con omisión de información adicional de info comando por brevedad):

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 en su situación está preguntando sobre la caducidad de la clave en los esclavos, según https://github.com/antirez/redis/issues/2861:

las claves en un esclavo no caducan activamente y, por lo tanto, el avg_ttl nunca se calcula

Y según https://groups.google.com/forum/#!topic/redis-db/NFTpdmpOPnc:

avg_ttl nunca se inicializa en un esclavo y, por lo tanto, puede ser cualquier valor arbitrario que resida en la memoria en ese lugar.

Por lo tanto, es de esperar que el info El comando se comporta de manera diferente en los esclavos.