Будет ли Redis maxmemory-policy volatile-lru выселяться, если ничего не просрочено?

У меня есть сервер Redis с maxmemory-policy, установленным на volatile-lru. В документации указано, что это приведет к исключению из набора записей с установленным сроком действия, когда будет достигнут предел памяти.

В этом случае Redis удаляет только те элементы, срок действия которых истек? Если все в памяти имеет установленный срок действия, но ничего не истекло, будет ли что-либо вытеснено при достижении максимального объема памяти?


person Ray    schedule 19.02.2015    source источник


Ответы (1)


Если ваша политика вытеснения настроена на любую из volatile-* политик, при нехватке памяти и отсутствии энергозависимых ключей для вытеснения Redis вернет ошибку OOM.

person Itamar Haber    schedule 19.02.2015
comment
Спасибо. Просто для уточнения: если срок действия всех энергозависимых ключей истекает в будущем, означает ли это, что не существует выключаемых энергозависимых ключей? т. е. может ли быть выселен только ключ с истекшим сроком действия? - person Ray; 19.02.2015
comment
Нет — после установки ключа с TTL он считается нестабильным (и будет кандидатом на удаление в соответствии с политиками volatile-*). Когда срок действия изменчивого ключа истекает, его больше нельзя вытеснить, поскольку он больше не существует. - person Itamar Haber; 19.02.2015
comment
Хорошо, поэтому, если срок действия всех моих ключей истекает в будущем (являются летучими), при достижении максимального объема памяти он все равно должен начать вытеснять самые старые из них, если установлен летучий LRU. - person Ray; 19.02.2015
comment
Укажите, что произойдет, если для TTL явно установлено значение -1? По моему опыту, ключи, установленные таким образом, не подходят для выселения volatile-*. - person keithl8041; 14.12.2017
comment
@ keithl8041Я не знаю, как напрямую установить для TTL ключа любое значение, оно косвенно контролируется командами EXPIRE/PEXPIRE/SET .. EX, а предоставление отрицательного значения приводит к немедленному истечению срока действия. - person Itamar Haber; 15.12.2017
comment
@Farhad да, установка maxmemory-policy на allkeys-lru удалит ключи независимо от их TTL - person Itamar Haber; 22.01.2018