如何设置Redis最大内存?

brtdzjyr  于 2023-04-19  发布在  Redis
关注(0)|答案(6)|浏览(202)

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

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

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

maxmemory 2mb

顺便问一下,我想知道默认内存是多少。我想把内存设置为2GB,怎么做?
然后,我在redis configure中添加了这一行,将maxmemory设置为40 GB:

maxmemory 41943040

我在redis-cli中使用命令:

config get maxmemory

它向我显示:

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

但是,我的java程序在key number大约为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?如何做到这一点?请给予我一些详细的代码。

u5rb5r59

u5rb5r591#

是的-设置内存限制只需取消注解.conf文件中的maxmemory行。默认值为0,这意味着无限(直到操作系统耗尽RAM并杀死进程-我建议始终将maxmemory设置为正常值)。
更新:正如@Eric Uldall在评论中提到的,一个CONFIG SET maxmemory <sane value>,后面跟着一个CONFIG REWRITE也应该可以做到这一点。

m0rkklqb

m0rkklqb2#

注解中的文档调用了bytes,但我使用了mb & 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"
zysjyyx4

zysjyyx43#

不需要在.conf文件中做任何更改,只需按照以下步骤操作即可

**第一步:**首先检查redis-server是否工作

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

**第三步:**执行上述步骤后,执行以下命令设置maxmemory:

127.0.0.1:6379> config set maxmemory 128M
OK

要检查maxmemory是否设置为128 M,请再次运行step 2

**第四步:**修改maxmemory后重启redis-server

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

7vhp5slm4#

最大内存41943040
选项以字节为单位设置,因此设置为40MB

lpwwtiir

lpwwtiir5#

如果有人在本地环境中设置maxmemory配置仍然有问题,实际步骤如下:
1.在终端中,启动redis示例redis-server
1.在一个 * 新的终端窗口 * 运行redis-cli
1.在新的终端窗口(步骤2)中运行config set maxmemory 2mb
1.通过在与步骤2/3相同的终端窗口中运行config get maxmemory来验证maxmemory
在服务器运行时更改Redis配置一节中有一些关于here的文档

t98cgbkg

t98cgbkg6#

由于这是一个老问题了,所以在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

相关问题