Сделайте шаг назад и подумайте, как работает размерный кэш.Политика LRU удалит последнюю использованную запись.Запись считается использованной, когда к ней обращаются (читают) или видоизменяют (пишут).Наиболее распространенный алгоритм состоит в том, чтобы двусвязный список проходил через хеш-таблицу так, чтобы при поиске в таблице запись в цепочке списков находилась за время O (1).В списке сохраняется порядок, в котором заголовок используется наименее недавно, а хвост - самым последним, поэтому доступная запись перемещается в хвост.В случае выселения, запись головы является жертвой, и она не связана и удалена из таблицы.
Теперь подумайте об истечении срока действия.Политики, найденные на практике, будут сбрасывать тайм-аут на основе последнего чтения (время ожидания) или последней записи (время жизни).Это может звучать похоже на алгоритм LRU, описанный выше, так как он поддерживает порядок на основе тех же шаблонов доступа.Разница лишь в том, что кеш определяет, что необходимо выселение: размер против времени.Таким образом, мы можем применить тот же алгоритм и просто изменить способ обнаружения переполнения!
Это означает, что вы можете реализовать алгоритм LRU и обобщить предикат оценки, чтобы разрешить переключение между емкостью, привязанной к временной привязке.Результатом является кешируемый кэш с эффективным использованием времени и пространства.