Je trouve le configure dans this , il vient de dire que la commande pour utiliser le configure spécifier:
./redis-server <path>/redis.conf
Mais, je ne sais pas comment écrire le configure. J'ai donc trouvé la configuration par défaut dans this . Mais, je ne comprends toujours pas comment définir la mémoire maximale. Est-ce qu'il ajoute juste cette ligne dans configure?
maxmemory 2mb
En passant, je veux savoir combien coûte la mémoire par défaut. et je veux définir la mémoire à 2 Go, comment le faire?
Ensuite, j'ai ajouté cette ligne à la redis configure pour définir maxmemory à 40 Go:
maxmemory 41943040
Et j'utilise la commande dans redis-cli:
config get maxmemory
ça me montre:
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "41943040"
Mais, mon programme Java lève l'exception comme ceci lorsque le numéro de clé est d'environ 200 000:
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)
Je n'en ai aucune idée. Est-ce que je réussis à régler la mémoire maximale à 40 Go? Comment faire? donnez-moi s'il vous plaît du code en détail.
Oui - pour définir la limite de mémoire, décommentez simplement la ligne maxmemory
dans le fichier .conf. La valeur par défaut est 0, ce qui signifie illimité (jusqu'à ce que le système d'exploitation ne dispose plus de RAM et tue le processus - je recommande de toujours définir maxmemory sur une valeur raisonnable).
Mise à jour: comme @Eric Uldall l'a mentionné dans les commentaires, un CONFIG SET maxmemory <sane value>
, suivi d'un CONFIG REWRITE
devrait également faire l'affaire.
maxmemory 41943040
option définie en octets, vous définissez donc 40 Mo
La documentation dans les commentaires appelle des octets mais j'ai utilisé des extensions telles que mb & gb sans aucun problème.
$ grep ^maxmemory /etc/redis-server.conf
maxmemory 8gb
maxmemory-policy allkeys-lru
Et pour confirmer:
$ redis-cli
...
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "8589934592"