2015-10-14 71 views
7

我发现this的配置,它只是表示该命令使用指定配置:如何设置Redis最大内存?

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

但是,我不知道该怎么写配置的想法。所以我找到了this的默认配置。但是,我仍然不明白如何设置最大内存。它只是在配置中添加此行吗?

maxmemory 2mb 

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

然后,我已经加入这一行到Redis的配置设置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 GB?怎么做?请详细给我一些代码。

回答

9

是 - 要设置内存限制,只需取消注释.conf文件中的maxmemory行。默认值为0,这意味着无限制(直到操作系统用完RAM并杀死进程 - 我建议始终将maxmemory设置为理智值)。

更新:作为@Eric Uldall在评论中提到,CONFIG SET maxmemory <sane value>,其次是CONFIG REWRITE也应该做的伎俩。

+1

我已经加入行 “maxmemory 41943040” 设置最大内存40GB,但它抛出异常“OOM命令不允许当使用内存>'maxmemory'。“ – v11

+1

您已将maxmemory设置为41943040字节= 40960KB = 40MB –

+2

哦,我明白了。我已更改为“maxmemory 40GB”进行测试。谢谢! – v11

0

maxmemory 41943040

选项以字节为单位设定,让您设置40MB