Код Middle Состояние и данные обновлено
Кеш ответов API с TTL
Условие
Реализуйте логику кеша с временем жизни. Функция runCache(ttl, ops) получает время жизни записи в мс и список операций, а возвращает массив результатов каждой операции get:
["set", key, value, now]: сохранить значение в моментnow;["get", key, now]: вернуть значение, если запись есть иnow - времяЗаписи < ttl, иначеnull(просроченную запись удалить);["invalidate", prefix]: удалить все записи, ключ которых начинается сprefix.
Время передаётся явно, чтобы логику можно было проверить без таймеров.
Примеры
runCache(1000, [["set", "u", "Анна", 0], ["get", "u", 500]]) // ["Анна"]
runCache(1000, [["set", "u", "Анна", 0], ["get", "u", 1000]]) // [null]
runCache(1000, [["set", "u", "Анна", 0], ["get", "u", 999]]) // ["Анна"]
Как подойти
Подсказки: 2
- Храните вместе со значением время записи.
- Удаление по префиксу: обойдите копию списка ключей.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.