Назад | Перейти на главную страницу

Настроить Redis, чтобы в памяти не было всего?

Мне нравится redis, потому что он позволяет мне выполнять операции со структурами данных. Я хотел посмотреть, что произойдет, если я помещу в Redis больше данных, чем у меня для ram. Итак, я написал цикл, который повторно вставлял 30 Кбайт и устанавливал maxmemory 100MB. Я полагаю, он останется на уровне 100 МБ. Он продолжал расти. Прошлый 1 ГБ, затем 2 ГБ. Внезапно он разбился, потому что я запустил 32-битную версию.

Теперь ... я не понимаю, в чем смысл maxmemory? Я использую версию для Windows, поэтому, возможно, ее игнорируют. Redis должен иметь все в памяти? Если у меня есть сайт (на linux) с базой данных 10 ГБ и 512 МБ на машине, redis будет работать? Мне не нужно, чтобы он был невероятно быстрым, я просто предпочитаю изменять данные в нем, а затем в sql (хотя я надеюсь, что он все еще быстрее, чем mysql)

Redis - это база данных в памяти, вам, вероятно, лучше взглянуть на что-то, предназначенное для «на диске», хотя есть некоторые действительно приятные аспекты Redis, которые я изо всех сил пытался найти в другом месте :(

Задача maxmemory - установить максимальный объем памяти, который будет использовать Redis. Однако вы поставили его в невозможную ситуацию, попросив хранить больше информации, чем может поместиться в выделенной памяти. Если вы дадите Redis способ освободить память, он это сделает. Но если нет отбрасываемых объектов, ничего не поделаешь.

«Обратите внимание, что параметр [maxmemory] действительно полезен только при использовании Redis в качестве кеша. Если вы используете его в качестве общей базы данных, вам нужно будет отслеживать потребление памяти и принимать меры до того, как будет израсходовано слишком много ресурсов».