Вопрос проверяет понимание TTL-кэшей и политики устаревания данных.
Если срок хранения (TTL) истёк, значение должно считаться невалидным. Обычно его удаляют из кэша и вычисляют заново. Затем новое значение записывается с обновлённым временем жизни. Это предотвращает использование устаревших данных.
TTL-кэш хранит не только значение, но и время его создания или истечения.
При обращении к кэшу:
Проверяется наличие ключа.
Если ключ есть — проверяется время истечения.
Если TTL истёк:
значение удаляется
функция вычисляется заново
результат записывается в кэш
Если TTL не истёк — возвращается кэшированное значение.
Пример структуры:
cache[key] = (result, expire_time)
Проверка:
if time.time() > expire_time:
# пересчитать
Без TTL возможны проблемы:
устаревшие данные
рост кэша
несогласованность состояния
Lazy expiration — удаление при обращении
Background cleanup — очистка отдельным процессом
При истечении TTL значение должно считаться невалидным, пересчитываться и записываться заново. Это стандартная логика большинства кэшей.