Permalink
Browse files

maxmemory-samples implemented in CONFIG command and configuration file

  • Loading branch information...
1 parent 670bf2f commit a36879293d7aa2d9fb57d43a0520f8032ed68d5f @antirez committed Oct 15, 2010
Showing with 20 additions and 7 deletions.
  1. +1 −1 redis.conf
  2. +19 −6 src/config.c
View
@@ -165,7 +165,7 @@ dir ./
# pick the one that was used less recently, you can change the sample size
# using the following configuration directive.
#
-# maxmemory-sample 3
+# maxmemory-samples 3
############################## APPEND ONLY MODE ###############################
View
@@ -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++;

0 comments on commit a368792

Please sign in to comment.