Для TTL-кеша удобно хранить по ключу запись с value, expiresAt и при необходимости timerId. При перезаписи старый таймер нужно отменить или обезвредить.
Как лучше организовать хранение данных для кэша с TTL, включая идентификатор таймера и значение?
Для TTL-кеша удобно хранить по ключу запись с value, expiresAt и при необходимости timerId. При перезаписи старый таймер нужно отменить или обезвредить.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для TTL-кеша удобно хранить по ключу запись с value, expiresAt и при необходимости timerId. При перезаписи старый таймер нужно отменить или обезвредить.
Callback удаления должен проверить, что запись всё ещё та же, иначе старый таймер удалит новое значение. При get сравнивайте expiresAt с текущим временем: таймеры могут задерживаться. Для большого кеша вместо таймера на каждый ключ рассмотрите периодическую очистку и ограничение размера.