Как установить Redis max memory?

Я нахожу configure в this, он просто сказал, что команда использует команду configure:

./redis-server <path>/redis.conf

Но я понятия не имею, как написать configure. Поэтому я нашел конфигурацию по умолчанию в этом. Но я до сих пор не понимаю, как установить максимальную память. Он просто добавляет эту строку в configure?

maxmemory 2mb

Кстати, я хочу знать, сколько стоит память по умолчанию. и я хочу установить память на 2 ГБ, как это сделать?

Затем я добавил эту строку в redis configure, чтобы установить maxmemory в 40GB:

maxmemory 41943040

И я использую команду в redis-cli:

config get maxmemory

это покажет мне:

127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "41943040"

Но, моя java-программа генерирует исключение, подобное этому, когда номер ключа составляет около 200000:

Exception in thread "Thread-228" redis.clients.jedis.exceptions.JedisDataException: OOM command not allowed when used memory > 'maxmemory'.
    at redis.clients.jedis.Protocol.processError(Protocol.java:117)
    at redis.clients.jedis.Protocol.process(Protocol.java:151)
    at redis.clients.jedis.Protocol.read(Protocol.java:205)
    at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297)
    at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:196)
    at redis.clients.jedis.Jedis.hmset(Jedis.java:644)
    at cn.ict.dt2redis.analyser.AbstractAnalyser.pushOne(AbstractAnalyser.java:21)
    at cn.ict.dt2redis.analyser.BatchAbstractAnalyser.run(BatchAbstractAnalyser.java:16)
    at java.lang.Thread.run(Thread.java:722)

Я понятия не имею, успел ли установить максимальную память до 40 ГБ? Как это сделать? пожалуйста, дайте мне код в деталях.

Ответ 1

Да - для установки предела памяти просто раскомментируйте строку maxmemory в файле .conf. По умолчанию 0, что означает неограниченный (пока операционная система не исчерпает ОЗУ и не убьет процесс - я рекомендую всегда устанавливать maxmemory на нормальное значение).

Обновлено: как упомянул @Eric Uldall в комментариях, CONFIG SET maxmemory <sane value>, за которым следует CONFIG REWRITE, тоже должны сработать. Это изменит ваш redis.conf, чтобы сохранить изменения в случае перезапуска

Ответ 2

Документация в комментариях вызывает байты, но я использовал расширения, такие как mb & без проблем.

$ grep ^maxmemory /etc/redis-server.conf
maxmemory 8gb
maxmemory-policy allkeys-lru

И для подтверждения:

$ redis-cli
...
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "8589934592"

Ответ 3

maxmemory 41943040

установленная в байтах, поэтому вы устанавливаете 40 МБ

Ответ 4

Если у кого-то все еще возникают проблемы с настройкой конфигурации maxmemory в локальной среде, действительные шаги следующие:

  1. В терминале запустите свой экземпляр Redis redis-server
  2. В новом окне терминала запустите redis-cli
  3. В новом окне терминала (шаг 2) запустите config set maxmemory 2mb
  4. Проверьте maxmemory, запустив config get maxmemory в том же окне терминала, что и шаги 2/3

Несколько документировано здесь в разделе Изменение конфигурации Redis, пока сервер работает.