Обычный SET без опций expire создаёт ключ заново и сбрасывает предыдущий TTL; чтобы сохранить expire, используют SET KEEPTTL (где поддерживается) или обновляют значение иначе (SET+EXPIRE, GETSET с осторожностью).
Разбор
SET key val → TTL исчезает, ключ «вечный», пока снова не зададите expire.
SET key val EX n задаёт новый TTL явно.
INCR и многие команды над значением TTL не снимают.
- Ошибка «забыли KEEPTTL» — частый баг кэша на интервью/в проде.
Итог
Перезапись через SET по умолчанию убивает старый TTL — проверяйте контракт.