Подтвердить что ты не робот

Memcache и истекшие элементы

Когда в memcache доступная память заполнена, memcache использует LRU (последний недавно использованный) алгоритм для освобождения памяти. Мой вопрос в том, будет ли алгоритм LRU скорее удалять записи, которые не использовались в течение некоторого времени (последнее последнее время), чем истекшие элементы? Записи, которые заканчиваются, не удаляются в тот момент, но когда в следующий раз кто-то попытается получить к нему доступ (AFAIR). Итак, будет ли алгоритм LRU (также) истекать из ключей?

4b9b3361

Ответ 1

Чтобы понять, как memcached делает LRU, вы должны углубляться и понимать, как memcached хранит элементы. Элементы хранятся в зависимости от их размера, просто поместите все свои предметы, которые позволяют сказать, что 100k хранятся в одной и той же плите, в то время как другие предметы, которые являются 200k, хранятся в другой плите.

Когда память заполняется и вы пытаетесь сохранить элемент 100k, memcached будет применять LRU на этой панели. Если ключи с истекшим сроком действия или не используются в плите 200k, они остаются там, а если в панели 100k есть только горячие клавиши, один из них, основанный на алгоритме, будет выведен.

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

Кроме того, когда вы пытаетесь получить элемент, срок действия которого истекает, этот элемент выгружается и память исправляется.

Подробнее о (много в google для распределения памяти memcached, которое также объясняет LRU, поэтому достаточно прочитать об этом):

http://returnfoo.com/2012/02/memcached-memory-allocation-and-optimization-2/

http://www.adayinthelifeof.nl/2011/02/06/memcache-internals/

И действительно хороший инструмент, который я рекомендую для каждого memcached темы:

http://code.google.com/p/phpmemcacheadmin/

Надеюсь, что это поможет!

Ответ 2

Из того, что я знаю, это ограничение не соответствует действительности.

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

Memcache выведет элемент в соответствии с LRU (не имеет значения, имеет ли он какие-либо истекшие элементы, если они используются более недавно, чем другой ключ (даже действительный))

проверено некоторое время назад на memcache 1.4.4