Тъй като правите „...“, трудно е да се каже със сигурност, но бих казал, че задавате mykey по време на тази част, което ефективно ще премахне изтичането.
От ръководството за EXPIRE
Времето за изчакване се изчиства само когато ключът бъде премахнат с помощта на командата DEL или презаписан с командите SET или GETSET
Също така по отношение на отговора -1 от TTL
Връщана стойност
Целочислен отговор:TTL в секунди или -1, когато ключът не съществува или няма време за изчакване.
РЕДАКТИРАНЕ:Имайте предвид, че това поведение се промени в Redis 2.8
Започвайки с Redis 2.8, връщаната стойност в случай на грешка се промени:
Командата връща -2, ако ключът не съществува.
Командата връща -1, ако ключът съществува, но няма свързано изтичане.
С други думи, ако вашият ключ съществува, той ще изглежда постоянен, т.е. няма зададено изтичане.
РЕДАКТИРАНЕ:Изглежда, че мога да възпроизведа това, ако създам ключа на подчинен сървър REDIS, подчиненият няма да изтрие ключа без главен вход, тъй като обикновено не бихте създавали ключове локално на подчинен. Тук ли е така?
Въпреки това, докато подчинените, свързани към главен, няма да изтекат ключовете независимо (но ще изчакат DEL, идващ от главния), те все пак ще приемат пълното състояние на expires, съществуващо в набора от данни, така че когато подчинен е избран за главен, той ще може да изтече срока на валидност на ключовете независимо, като действа напълно като главен.