Код 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
  1. Храните вместе со значением время записи.
  2. Удаление по префиксу: обойдите копию списка ключей.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.