Недостаток слишком большой установки Redis-set-max-intset-entry?

Согласно странице оптимизации памяти Redis можно установить настраиваемый set-max-intset-entries для того, чтобы оптимизировать память для больших наборов целых чисел. Я провел некоторое тестирование с целыми числами менее 2М, установив set-max-intset-entriesдо 10000. Я обнаружил, что каждое int в среднем составляло около 4 байтов, когда набор был меньше максимального, а когда длиннее максимального, каждое int составляло около 60 байтов.

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

1 ответ

Компромисс в ЦП должен быть вовремя для запуска связанной команды, такой как SADD или SCARD.

Основной процесс, используемый Commissar, состоит в том, чтобы проверять команды перед запуском теста и после него, и определять отличия, например, команды SADD. Сделайте это с таблицей настроек и посмотрите на результаты. Конечно, вам нужно будет многократно запускать тесты, чтобы получить большой размер выборки.

Следует отметить, что вы захотите сохранить и перезапустить между тестами, где вы измените настройки памяти, так как Redis не реструктурирует данные при изменении этого параметра. Это самый простой способ сохранить данные и использовать разные настройки.

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

Другие вопросы по тегам