Такая же ситуация была, с хостером решали этот вопрос вместе. Сайт с 200к+ записями. Нам в какой-то момент 32 гб стало мало при TTL кеша редис в 86400. Было решено просто добавить еще 1 плашку на 32 гб.
PS Скажу сразу что редис очень не любит когда его ограничивают в ОЗУ. При ограничении в ОЗУ начинает страдать ЦП. Замкнутый круг получается.
Итог: или откажитесь от объектного кеша или разрешите брать столько ОЗУ сколько надо или попробуйте уменьшить TTL кеша (но это тоже спорно)
Игорь Симонян
Полностью согласен с вашим опытом! Действительно, Redis показывает наилучшую производительность, когда ему позволяют использовать столько памяти, сколько необходимо. Ограничение объема ОЗУ приводит к тому, что система начинает активно использовать механизм выгрузки данных, что создает дополнительную нагрузку на CPU и может существенно снизить производительность.
В вашем случае с сайтом, имеющим более 200 тысяч записей, увеличение памяти до 64 ГБ — это абсолютно правильное решение. При TTL в 86400 секунд (24 часа) такой объем данных просто физически не может уместиться в меньший объем памяти без существенного влияния на производительность.
Что касается уменьшения TTL — это действительно спорный момент. Да, это может помочь снизить потребление памяти, но при этом увеличится нагрузка на базу данных и время отклика системы, так как придется чаще доставать данные из основной БД. В итоге можно получить ситуацию, когда выигрыш в памяти будет нивелирован потерей в производительности.
На мой взгляд, если у вас есть возможность предоставить Redis достаточно памяти — это самый оптимальный путь. Это позволит системе работать максимально эффективно, без дополнительных накладных расходов на управление памятью и выгрузку данных. Главное — правильно оценить необходимый объем памяти с учетом роста данных в будущем.