Как установить 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
в локальной среде, действительные шаги следующие:
- В терминале запустите свой экземпляр Redis
redis-server
- В новом окне терминала запустите
redis-cli
- В новом окне терминала (шаг 2) запустите
config set maxmemory 2mb
- Проверьте
maxmemory
, запустив config get maxmemory
в том же окне терминала, что и шаги 2/3
Несколько документировано здесь в разделе Изменение конфигурации Redis, пока сервер работает.