Что нужно сделать с `setTimeout` в реализации TTL-кэша?

Старый TTL-таймер нужно отменять при перезаписи или удалении записи, а его callback должен проверять, что не удаляет уже новое значение того же ключа.

Короткий ответ

Что ответить на собеседовании

Старый TTL-таймер нужно отменять при перезаписи или удалении записи, а его callback должен проверять, что не удаляет уже новое значение того же ключа.

Подробный разбор

Ответ с пояснениями

Старый TTL-таймер нужно отменять при перезаписи или удалении записи, а его callback должен проверять, что не удаляет уже новое значение того же ключа.

Храните timer id вместе с записью и очищайте все таймеры при clearCache. Для точной семантики дополнительно проверяйте expiresAt при чтении: таймер может сработать позже из-за занятого потока или фоновой вкладки. Большому кешу множество отдельных таймеров может быть дорого; тогда рассматривают общую периодическую очистку или очередь сроков.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее