У меня есть сервер Redis с версией 2.4.5 и загруженным в память dump.rdb размером 11 ГБ. Он работает на EC2 на экземпляре с высокой памятью 4x очень большого размера (общий объем памяти 70 ГБ). Однако оказывается, что Redis уже занимает 50 ГБ памяти и становится все больше и больше. Мой набор данных по-прежнему будет расти, вероятно, примерно до 20 ГБ, поэтому явно 70 ГБ памяти будет недостаточно. У вас есть идеи, как преодолеть это ограничение или как заставить Redis меньше потреблять память?
Я пробовал redis 32bit, но он умирает, пытаясь загрузить набор данных в память при запуске.
Раньше также пробовали max-memory, но получали странные результаты. Не пробовал виртуальную память, так как я читал, что она устарела.
Купите другой сервер, сделайте шардинг. Так должен работать Redis. Если это не то, что вы хотите, тогда Redis - неподходящее программное обеспечение для ваших целей.
Если у вас адекватный своп, вы можете просто позволить ему исчерпать память. Пострадает производительность. Если вы не хотите хранить весь набор данных в ОЗУ, redis
не подходит для работы.
Увидеть Redis FAQ:
Вы можете попытаться загрузить набор данных, размер которого превышает размер вашей памяти, в Redis и посмотреть, что произойдет, в основном, если вы используете современную операционную систему и у вас есть много данных в БД, к которым редко обращаются, реализация виртуальной памяти ОС попытается для замены редко используемых страниц памяти на диске, чтобы вызывать эти страницы только тогда, когда они необходимы. Если у вас много редко используемых больших значений, это сработает. Если ваша БД большая из-за того, что у вас есть множество маленьких значений, к которым осуществляется доступ случайным образом без определенного шаблона, это не сработает (на низком уровне страница обычно составляет 4096 байт, и вы можете хранить разные ключи / значения на одной странице. ОС не может поменять местами эту страницу на диске, если часто используется хотя бы несколько ключей).