redis expiry keys, хранящий память - PullRequest
1 голос
/ 12 февраля 2020

Мы истекаем 1000 ключей как таковых c в среднем, делая снимок, мы случайно увидели, что размер дампа сравнительно меньше, чем первичный, поскольку, поскольку снимок исключает память ключа с истекшим сроком хранения. Так как ключи с истекающим сроком хранения занимают много памяти на нашей платформе, есть ли способ, которым мы можем сделать redis, чтобы периодически освобождать память, удерживаемую для ключей с истекшим сроком действия. (мы используем движок 2.8.21) или последние версии движка redis решат эту проблему мало эффективно. Пожалуйста, направьте меня к правильной платформе, если stackoverflow не подходит для моего вопроса.

Восстановить руководство по памяти: https://docs.redislabs.com/latest/ri/memory-optimizations/reclaim-expired-keys-memory-faster/ (но нужно указать, поможет ли обновление или выполнение сканирования будь хорошим, как упомянуто в do c)

1 Ответ

1 голос
/ 12 февраля 2020

Истекшие ключи удаляются из памяти:

  • Пассивно: когда вы пытаетесь получить к нему доступ и обнаруживается, что срок действия ключа истек. Вот как полное SCAN поможет вам , оно вызывает пассивное удаление во всем пространстве клавиш.
  • Активно: каждые 100 мс он пытается удалить из памяти ключи с истекшим сроком действия в случайном порядке , никогда не тратя на это больше 1 мс за цикл, пока не оценивается, что истекло менее 25% ключи остаются. Лог c не так уж прост, см. activeExpireCycle ( 2.8.21 версия ).

Обновление может помочь, так как появились новые функции / настройки конфигурации , например activedefrag.

Пожалуйста, смотрите Redis быстро заполняет память, работает --bigkeys освобождает ее для решений, включая политику выселения и частоту активного истечения срока действия.

...