Согласно Memcached FAQ , следующее происходит, когда попытка выделить значение в кеш выполняется и предел памяти достигнут:
Когда истек срок действия кэшированных элементов
удален из кеша?
memcached использует
ленивый срок годности, что означает, что он использует
нет лишних элементов с истекающим сроком действия. Когда
Товар запрашивается (запрос на получение)
проверяет время истечения, чтобы увидеть, если
товар до сих пор действует
возвращая его клиенту.
Аналогично при добавлении нового элемента в
кеш, если кеш полон, это
будет смотреть на предметы с истекшим сроком
заменить, прежде чем заменить наименьшее
используемые элементы в cache.used элементы в кэше.
Вопрос в том, что именно происходит, когда он заменяет «наименее используемые предметы». Поддерживает ли он ранг по доступу для каждого ключа или отслеживает доступ в течение определенного периода?
Например. Я добавляю 2 элемента в кеш (A и B). Шаблоны доступа для A и B немного отличаются. Я получаю доступ к A 5000 раз в час, в то время как я получаю доступ к B раз в секунду Согласно документации, кажется, что если я попытаюсь добавить еще один элемент (C) через два часа и будет достигнуто максимальное выделение памяти, B будет удален. Это связано с тем, что к Б обращались только 7200 раз, а к А - 10000 раз.
Это правильно? Если нет, есть ли скользящее временное окно, в котором отслеживается доступ? Например, A будет удалено, если окно будет 30 минут, потому что к нему обращались 0 раз за последние 30 минут, а к B обращались 1800 раз.
Есть мысли?