Особенности стратегии Memcached для распределения после достижения максимального объема памяти - PullRequest
2 голосов
/ 27 сентября 2010

Согласно Memcached FAQ , следующее происходит, когда попытка выделить значение в кеш выполняется и предел памяти достигнут:

Когда истек срок действия кэшированных элементов удален из кеша?

memcached использует ленивый срок годности, что означает, что он использует нет лишних элементов с истекающим сроком действия. Когда Товар запрашивается (запрос на получение) проверяет время истечения, чтобы увидеть, если товар до сих пор действует возвращая его клиенту.

Аналогично при добавлении нового элемента в кеш, если кеш полон, это будет смотреть на предметы с истекшим сроком заменить, прежде чем заменить наименьшее используемые элементы в cache.used элементы в кэше.

Вопрос в том, что именно происходит, когда он заменяет «наименее используемые предметы». Поддерживает ли он ранг по доступу для каждого ключа или отслеживает доступ в течение определенного периода?

Например. Я добавляю 2 элемента в кеш (A и B). Шаблоны доступа для A и B немного отличаются. Я получаю доступ к A 5000 раз в час, в то время как я получаю доступ к B раз в секунду Согласно документации, кажется, что если я попытаюсь добавить еще один элемент (C) через два часа и будет достигнуто максимальное выделение памяти, B будет удален. Это связано с тем, что к Б обращались только 7200 раз, а к А - 10000 раз.

Это правильно? Если нет, есть ли скользящее временное окно, в котором отслеживается доступ? Например, A будет удалено, если окно будет 30 минут, потому что к нему обращались 0 раз за последние 30 минут, а к B обращались 1800 раз.

Есть мысли?

1 Ответ

2 голосов
/ 27 сентября 2010

Это не точный LRU. В общем, вы не должны делать никаких предположений о наличии вещей в кеше.

Точный LRU будет намного дороже, так как все будет происходить слишком часто. Вместо этого memcached не будет помещать элемент во главе LRU, если это было сделано недавно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...