如何设置Redis max memory?

时间:2015-10-14 01:51:46

标签: redis

我在this中找到了configure,它只是说使用了configure configure命令:

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

但是,我不知道如何编写配置。所以我在this找到了默认配置。但是,我仍然不明白如何设置最大内存。它只是在configure中添加这一行吗?

maxmemory 2mb

顺便说一句,我想知道默认内存是多少。而我想将内存设置为2GB,该怎么办?

然后,我已将此行添加到redis configure以将maxmemory设置为40GB:

maxmemory 41943040

我在redis-cli中使用命令:

config get maxmemory
它告诉我:

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

但是,当密钥数约为200000时,我的java程序会抛出这样的异常:

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 GB?怎么做?请详细给我一些代码。

6 个答案:

答案 0 :(得分:21)

是 - 设置内存限制只是取消注释.conf文件中的maxmemory行。默认值为0,表示无限制(直到操作系统耗尽RAM并终止进程 - 我建议始终将maxmemory设置为合理的值)。

更新:正如@Eric Uldall在评论中提到的那样,CONFIG SET maxmemory <sane value>,后跟CONFIG REWRITE也应该做到这一点。

答案 1 :(得分:4)

评论中的文档会调出字节,但我使用了扩展名,例如mb&a​​mp; gb没有任何问题。

$ 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"

答案 2 :(得分:2)

  

maxmemory 41943040

选项以字节为单位设置,因此设置为40MB

答案 3 :(得分:0)

如果在本地环境中仍然无法设置maxmemory配置设置,则实际步骤如下:

  1. 在终端中,启动您的Redis实例redis-server
  2. 新终端窗口中运行redis-cli
  3. 在新的终端窗口(步骤2)中,运行config set maxmemory 2mb
  4. 通过在与步骤2/3相同的终端窗口中运行maxmemory来验证config get maxmemory

在服务器运行时更​​改Redis配置下的here中有一些文档记录

答案 4 :(得分:0)

由于这是一个古老的问题,因此在2019年阅读并使用Ubuntu 18.04的用户,配置文件位于/etc/redis/redis.conf中,如果您使用的是(默认/推荐方法)apt install redis-server默认的内存限制设置为“ 0”,这实际上意味着没有“无限制”,如果用户的RAM /内存量有限/少量,这可能会很麻烦。要设置自定义内存限制,您可以简单地编辑配置文件,并在第一行输入“ maxmemory 1gb”。重新启动redis服务以使更改生效。要验证更改,请使用redis-cli config get maxmemory

Ubuntu 18.04用户可以在此处阅读更多信息:How to install and configure REDIS on Ubuntu 18.04

答案 5 :(得分:0)

  

无需更改.conf文件中的任何内容,只需执行以下步骤

步骤1:检查一次Redis服务器是否正常工作

$ redis-cli
127.0.0.1:6379> ping
PONG

如果回复为PONG,则您的服务器运行正常。

步骤2:要获取当前的最大内存,请运行以下命令-

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

默认情况下,默认设置为0。

步骤3:运行上述步骤后,运行以下命令来设置最大内存容量

127.0.0.1:6379> config set maxmemory 128M
OK

要检查最大内存是否设置为128M,请再次运行step 2

步骤4::更改maxmemory后,重新启动Redis服务器

$ sudo systemctl restart redis
OR
$ sudo systemctl restart redis-server