Redis
 sql >> Database >  >> NoSQL >> Redis

Numero di chiavi in ​​scadenza elencate dal comando info su redis slave non coerente con ciò che vedo

expires contiene chiavi esistenti con TTL che scadranno, escluse le chiavi già scadute. Esempio ( con omissione di informazioni extra da info comando per brevità):

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> 

Dato che nella tua situazione stai chiedendo della scadenza della chiave sugli schiavi, per https://github.com/antirez/redis/issues/2861:

le chiavi su uno slave non sono scadute attivamente e quindi avg_ttl non viene mai calcolato

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

avg_ttl non viene mai inizializzato su uno slave e quindi può essere il valore arbitrario che risiede in memoria in quel punto.

Pertanto, è prevedibile che il info comando si comporta diversamente sugli slave.