提交 a3687929 编写于 作者: A antirez

maxmemory-samples implemented in CONFIG command and configuration file

上级 670bf2fd
...@@ -165,7 +165,7 @@ dir ./ ...@@ -165,7 +165,7 @@ dir ./
# pick the one that was used less recently, you can change the sample size # pick the one that was used less recently, you can change the sample size
# using the following configuration directive. # using the following configuration directive.
# #
# maxmemory-sample 3 # maxmemory-samples 3
############################## APPEND ONLY MODE ############################### ############################## APPEND ONLY MODE ###############################
......
...@@ -138,6 +138,12 @@ void loadServerConfig(char *filename) { ...@@ -138,6 +138,12 @@ void loadServerConfig(char *filename) {
err = "Invalid maxmemory policy"; err = "Invalid maxmemory policy";
goto loaderr; 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) { } else if (!strcasecmp(argv[0],"slaveof") && argc == 3) {
server.masterhost = sdsnew(argv[1]); server.masterhost = sdsnew(argv[1]);
server.masterport = atoi(argv[2]); server.masterport = atoi(argv[2]);
...@@ -271,6 +277,10 @@ void configSetCommand(redisClient *c) { ...@@ -271,6 +277,10 @@ void configSetCommand(redisClient *c) {
} else { } else {
goto badfmt; 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")) { } else if (!strcasecmp(c->argv[2]->ptr,"timeout")) {
if (getLongLongFromObject(o,&ll) == REDIS_ERR || if (getLongLongFromObject(o,&ll) == REDIS_ERR ||
ll < 0 || ll > LONG_MAX) goto badfmt; ll < 0 || ll > LONG_MAX) goto badfmt;
...@@ -362,6 +372,7 @@ void configGetCommand(redisClient *c) { ...@@ -362,6 +372,7 @@ void configGetCommand(redisClient *c) {
robj *o = getDecodedObject(c->argv[2]); robj *o = getDecodedObject(c->argv[2]);
void *replylen = addDeferredMultiBulkLength(c); void *replylen = addDeferredMultiBulkLength(c);
char *pattern = o->ptr; char *pattern = o->ptr;
char buf[128];
int matches = 0; int matches = 0;
if (stringmatch(pattern,"dbfilename",0)) { if (stringmatch(pattern,"dbfilename",0)) {
...@@ -380,9 +391,7 @@ void configGetCommand(redisClient *c) { ...@@ -380,9 +391,7 @@ void configGetCommand(redisClient *c) {
matches++; matches++;
} }
if (stringmatch(pattern,"maxmemory",0)) { if (stringmatch(pattern,"maxmemory",0)) {
char buf[128]; ll2string(buf,sizeof(buf),server.maxmemory);
ll2string(buf,128,server.maxmemory);
addReplyBulkCString(c,"maxmemory"); addReplyBulkCString(c,"maxmemory");
addReplyBulkCString(c,buf); addReplyBulkCString(c,buf);
matches++; matches++;
...@@ -402,10 +411,14 @@ void configGetCommand(redisClient *c) { ...@@ -402,10 +411,14 @@ void configGetCommand(redisClient *c) {
addReplyBulkCString(c,s); addReplyBulkCString(c,s);
matches++; 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)) { if (stringmatch(pattern,"timeout",0)) {
char buf[128]; ll2string(buf,sizeof(buf),server.maxidletime);
ll2string(buf,128,server.maxidletime);
addReplyBulkCString(c,"timeout"); addReplyBulkCString(c,"timeout");
addReplyBulkCString(c,buf); addReplyBulkCString(c,buf);
matches++; matches++;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册