Aangezien je een '...' doet, is het moeilijk met zekerheid te zeggen, maar ik zou zeggen dat je mykey tijdens dat deel instelt, waardoor de vervaldatum effectief wordt verwijderd.
Uit de EXPIRE-handleiding
De time-out wordt alleen gewist wanneer de sleutel wordt verwijderd met het DEL-commando of wordt overschreven met het SET- of GETSET-commando
Ook met betrekking tot het -1 antwoord van TTL
Retourwaarde
Integer antwoord:TTL in seconden of -1 wanneer de sleutel niet bestaat of geen time-out heeft.
BEWERK:Merk op dat dit gedrag is gewijzigd in Redis 2.8
Beginnend met Redis 2.8 is de retourwaarde in geval van fout gewijzigd:
De opdracht retourneert -2 als de sleutel niet bestaat.
De opdracht retourneert -1 als de sleutel bestaat maar geen bijbehorende vervaldatum heeft.
Met andere woorden, als uw sleutel bestaat, lijkt deze persistent te zijn, dat wil zeggen dat er geen vervaldatum is ingesteld.
EDIT:Het lijkt erop dat ik dit kan reproduceren als ik de sleutel op een REDIS-slaveserver maak, de slaaf zal de sleutel niet verwijderen zonder masterinvoer, omdat u normaal gesproken geen sleutels lokaal op een slaaf zou maken. Is dit hier het geval?
Hoewel de slaves die zijn aangesloten op een master de sleutels niet onafhankelijk laten verlopen (maar zullen wachten op de DEL die van de master komt), nemen ze nog steeds de volledige status van de in de dataset aanwezige verlopen, dus wanneer een slave tot master wordt gekozen, wordt deze zal in staat zijn om de sleutels onafhankelijk te laten verlopen, volledig optredend als een master.