diff options
author | antirez <antirez@gmail.com> | 2010-10-15 11:57:38 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2010-10-15 11:57:38 +0200 |
commit | a36879293d7aa2d9fb57d43a0520f8032ed68d5f (patch) | |
tree | 2b3cb93751d772218f0f02f95d8a2cdda8e943e6 /src/config.c | |
parent | 670bf2fd36e0627af5de966c7d0c19b632712e4f (diff) | |
download | redis-a36879293d7aa2d9fb57d43a0520f8032ed68d5f.tar.gz |
maxmemory-samples implemented in CONFIG command and configuration file
Diffstat (limited to 'src/config.c')
-rw-r--r-- | src/config.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/config.c b/src/config.c index 73d3ae87b..48e522c5b 100644 --- a/src/config.c +++ b/src/config.c @@ -138,6 +138,12 @@ void loadServerConfig(char *filename) { err = "Invalid maxmemory policy"; goto loaderr; } + } else if (!strcasecmp(argv[0],"maxmemory-samples") && argc == 2) { + server.maxmemory_samples = atoi(argv[1]); + if (server.maxmemory_samples <= 0) { + err = "maxmemory-samples must be 1 or greater"; + goto loaderr; + } } else if (!strcasecmp(argv[0],"slaveof") && argc == 3) { server.masterhost = sdsnew(argv[1]); server.masterport = atoi(argv[2]); @@ -271,6 +277,10 @@ void configSetCommand(redisClient *c) { } else { goto badfmt; } + } else if (!strcasecmp(c->argv[2]->ptr,"maxmemory-samples")) { + if (getLongLongFromObject(o,&ll) == REDIS_ERR || + ll <= 0) goto badfmt; + server.maxmemory_samples = ll; } else if (!strcasecmp(c->argv[2]->ptr,"timeout")) { if (getLongLongFromObject(o,&ll) == REDIS_ERR || ll < 0 || ll > LONG_MAX) goto badfmt; @@ -362,6 +372,7 @@ void configGetCommand(redisClient *c) { robj *o = getDecodedObject(c->argv[2]); void *replylen = addDeferredMultiBulkLength(c); char *pattern = o->ptr; + char buf[128]; int matches = 0; if (stringmatch(pattern,"dbfilename",0)) { @@ -380,9 +391,7 @@ void configGetCommand(redisClient *c) { matches++; } if (stringmatch(pattern,"maxmemory",0)) { - char buf[128]; - - ll2string(buf,128,server.maxmemory); + ll2string(buf,sizeof(buf),server.maxmemory); addReplyBulkCString(c,"maxmemory"); addReplyBulkCString(c,buf); matches++; @@ -402,10 +411,14 @@ void configGetCommand(redisClient *c) { addReplyBulkCString(c,s); matches++; } + if (stringmatch(pattern,"maxmemory-samples",0)) { + ll2string(buf,sizeof(buf),server.maxmemory_samples); + addReplyBulkCString(c,"maxmemory-samples"); + addReplyBulkCString(c,buf); + matches++; + } if (stringmatch(pattern,"timeout",0)) { - char buf[128]; - - ll2string(buf,128,server.maxidletime); + ll2string(buf,sizeof(buf),server.maxidletime); addReplyBulkCString(c,"timeout"); addReplyBulkCString(c,buf); matches++; |