Как работает механизм отложенного истечения в memcached? - PullRequest
3 голосов
/ 13 мая 2011

(Прежде всего, мой английский не очень хорош, пожалуйста)

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

  1. Находит ли memcached некоторые просроченные данные и заменяет их добавленными данными, или
  2. заменяет ли это данные LRU, или
  3. это делает что-то еще?

Насколько я знаю, отложенное истечение срока действия таково, что memcached не удаляет активно данные с истекшим сроком действия из каждой плиты, а вместо этого только удаляет записи с истекшим сроком действия, когда ссылается ключ записи с истекшим сроком действия. Это пустая трата ресурсов, не так ли?

1 Ответ

4 голосов
/ 13 мая 2011

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

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

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

...