Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set Redis max memory?

Tags:

redis

I find the configure in this, it just said the command to use the specify configure:

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

But,I have no idea about how to write the configure. So I have find the default configure in this. But, I still don't understand how to set max memory. Does it just add this line in configure?

maxmemory 2mb

By the way, I want to know how much the default memory is. and I want to set the memory to 2GB, how to do it?

Then, I have added this line to the redis configure to set maxmemory to 40GB:

maxmemory 41943040

And I use the command in redis-cli:

config get maxmemory

it show me:

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

But, my java program throw the exception like this when key number is about 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)

I have no idea about it, do I success in setting max memory to 40 GB? How to do it? please give me some code in detail.

like image 639
v11 Avatar asked Oct 14 '15 01:10

v11


People also ask

How much RAM do I need for Redis?

The minimum requirements of a Redis infrastructure for non-productive OutSystems environments are the following: Single Redis server with 2 CPUs (>2.6 Ghz) and 4GB of RAM (can be Virtual Machine) Moderate bandwith network interface card (100 Mbps) 10GB disk (to store the operating system, logs, etc.)

Does Redis limit size?

All string values are limited to 512 MiB. This is the size limit you probably care most about. EDIT: Because keys in Redis are strings, the maximum key size is 512 MiB. The maximum number of keys is 2^32 - 1 = 4,294,967,295.


4 Answers

Yes - to set the memory limit just uncomment the maxmemory line in the .conf file. The default is 0, which means unlimited (until the operating system runs out of RAM and kills the process - I recommend to always set maxmemory to a sane value).

Updated: as @Eric Uldall mentioned in the comments, a CONFIG SET maxmemory <sane value>, followed by a CONFIG REWRITE should also do the trick. This will modify your redis.conf to preserve changes in case of restart

like image 178
Itamar Haber Avatar answered Oct 10 '22 20:10

Itamar Haber


The documentation in the comments call out bytes but I've used extensions such as mb & gb without any issues.

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

And to confirm:

$ redis-cli
...
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "8589934592"
like image 25
slm Avatar answered Oct 10 '22 19:10

slm


No need of changing any thing in the .conf file just follow the following steps

Step 1: Once check whether redis-server is working or not

$ redis-cli
127.0.0.1:6379> ping
PONG

if the reply is PONG then you server is working absolutely fine.

Step 2: To get the current max memory run the following commands-

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

Initially it is set to 0 by default.

Step 3: After running the above step run the following commands to set the maxmemory

127.0.0.1:6379> config set maxmemory 128M
OK

To check whether the maxmemory is set to 128M run the step 2 again.

Step 4: After changing the maxmemory restart the redis-server

$ sudo systemctl restart redis
OR
$ sudo systemctl restart redis-server
like image 10
Kshitij Sharma Avatar answered Oct 10 '22 21:10

Kshitij Sharma


maxmemory 41943040

option set in bytes, so you set 40MB

like image 7
Max Avatar answered Oct 10 '22 19:10

Max