diff --git a/src/config.c b/src/config.c index 7bd9592b..0bf2f5f4 100644 --- a/src/config.c +++ b/src/config.c @@ -887,6 +887,17 @@ void configSetCommand(client *c) { } config_set_special_field("masterauth") { zfree(server.masterauth); server.masterauth = ((char*)o->ptr)[0] ? zstrdup(o->ptr) : NULL; + } else if (!strcasecmp(c->argv[2]->ptr,"maxmemory")) { + if (getLongLongFromObject(o,&ll) == REDIS_ERR || + ll < 0) goto badfmt; + server.maxmemory = ll; + if (server.maxmemory) { + if (server.maxmemory < zmalloc_used_memory()) { + redisLog(REDIS_WARNING,"WARNING: the new maxmemory value set via CONFIG SET is smaller than the current memory usage. This will result in key eviction and/or the inability to accept new write commands depending on the maxmemory-policy."); + } + freeMemoryIfNeeded(); + } + } else if (!strcasecmp(c->argv[2]->ptr,"maxclients")) { } config_set_special_field("cluster-announce-ip") { zfree(server.cluster_announce_ip); server.cluster_announce_ip = ((char*)o->ptr)[0] ? zstrdup(o->ptr) : NULL;