Dato che stai eseguendo un "...", è difficile dirlo con certezza, ma direi che stai impostando mykey durante quella parte, il che rimuoverà effettivamente la scadenza.
Dal manuale EXPIRE
Il timeout viene cancellato solo quando la chiave viene rimossa con il comando DEL o sovrascritta utilizzando i comandi SET o GETSET
Inoltre, per quanto riguarda la risposta -1 di TTL
Valore restituito
Risposta intera:TTL in secondi o -1 quando la chiave non esiste o non ha un timeout.
EDIT:nota che questo comportamento è cambiato in Redis 2.8
A partire da Redis 2.8 il valore restituito in caso di errore è cambiato:
Il comando restituisce -2 se la chiave non esiste.
Il comando restituisce -1 se la chiave esiste ma non ha scadenza associata.
In altre parole, se la tua chiave esiste, sembrerebbe essere persistente, ovvero non avere alcuna scadenza impostata.
EDIT:sembra che possa riprodurlo se creo la chiave su un server slave REDIS, lo slave non cancellerà la chiave senza l'input principale, poiché normalmente non creeresti chiavi localmente su uno slave. È questo il caso qui?
Tuttavia, mentre gli slave collegati a un master non scadranno le chiavi in modo indipendente (ma attenderanno il DEL proveniente dal master), prenderanno comunque lo stato completo delle scadenze esistenti nel dataset, quindi quando uno slave viene eletto a master lo potrà far scadere le chiavi in autonomia, agendo a pieno titolo da master.