Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
bb0b03a3
Commit
bb0b03a3
authored
Apr 28, 2009
by
antirez
Browse files
less CPU usage in command parsing, case insensitive config directives
parent
02fdd5ab
Changes
1
Hide whitespace changes
Inline
Side-by-side
redis.c
View file @
bb0b03a3
...
@@ -926,44 +926,44 @@ static void loadServerConfig(char *filename) {
...
@@ -926,44 +926,44 @@ static void loadServerConfig(char *filename) {
sdstolower(argv[0]);
sdstolower(argv[0]);
/* Execute config directives */
/* Execute config directives */
if (!strcmp(argv[0],"timeout") && argc == 2) {
if (!strc
asec
mp(argv[0],"timeout") && argc == 2) {
server.maxidletime = atoi(argv[1]);
server.maxidletime = atoi(argv[1]);
if (server.maxidletime < 1) {
if (server.maxidletime < 1) {
err = "Invalid timeout value"; goto loaderr;
err = "Invalid timeout value"; goto loaderr;
}
}
} else if (!strcmp(argv[0],"port") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"port") && argc == 2) {
server.port = atoi(argv[1]);
server.port = atoi(argv[1]);
if (server.port < 1 || server.port > 65535) {
if (server.port < 1 || server.port > 65535) {
err = "Invalid port"; goto loaderr;
err = "Invalid port"; goto loaderr;
}
}
} else if (!strcmp(argv[0],"bind") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"bind") && argc == 2) {
server.bindaddr = zstrdup(argv[1]);
server.bindaddr = zstrdup(argv[1]);
} else if (!strcmp(argv[0],"save") && argc == 3) {
} else if (!strc
asec
mp(argv[0],"save") && argc == 3) {
int seconds = atoi(argv[1]);
int seconds = atoi(argv[1]);
int changes = atoi(argv[2]);
int changes = atoi(argv[2]);
if (seconds < 1 || changes < 0) {
if (seconds < 1 || changes < 0) {
err = "Invalid save parameters"; goto loaderr;
err = "Invalid save parameters"; goto loaderr;
}
}
appendServerSaveParams(seconds,changes);
appendServerSaveParams(seconds,changes);
} else if (!strcmp(argv[0],"dir") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"dir") && argc == 2) {
if (chdir(argv[1]) == -1) {
if (chdir(argv[1]) == -1) {
redisLog(REDIS_WARNING,"Can't chdir to '%s': %s",
redisLog(REDIS_WARNING,"Can't chdir to '%s': %s",
argv[1], strerror(errno));
argv[1], strerror(errno));
exit(1);
exit(1);
}
}
} else if (!strcmp(argv[0],"loglevel") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"loglevel") && argc == 2) {
if (!strcmp(argv[1],"debug")) server.verbosity = REDIS_DEBUG;
if (!strc
asec
mp(argv[1],"debug")) server.verbosity = REDIS_DEBUG;
else if (!strcmp(argv[1],"notice")) server.verbosity = REDIS_NOTICE;
else if (!strc
asec
mp(argv[1],"notice")) server.verbosity = REDIS_NOTICE;
else if (!strcmp(argv[1],"warning")) server.verbosity = REDIS_WARNING;
else if (!strc
asec
mp(argv[1],"warning")) server.verbosity = REDIS_WARNING;
else {
else {
err = "Invalid log level. Must be one of debug, notice, warning";
err = "Invalid log level. Must be one of debug, notice, warning";
goto loaderr;
goto loaderr;
}
}
} else if (!strcmp(argv[0],"logfile") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"logfile") && argc == 2) {
FILE *fp;
FILE *fp;
server.logfile = zstrdup(argv[1]);
server.logfile = zstrdup(argv[1]);
if (!strcmp(server.logfile,"stdout")) {
if (!strc
asec
mp(server.logfile,"stdout")) {
zfree(server.logfile);
zfree(server.logfile);
server.logfile = NULL;
server.logfile = NULL;
}
}
...
@@ -978,32 +978,32 @@ static void loadServerConfig(char *filename) {
...
@@ -978,32 +978,32 @@ static void loadServerConfig(char *filename) {
}
}
fclose(fp);
fclose(fp);
}
}
} else if (!strcmp(argv[0],"databases") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"databases") && argc == 2) {
server.dbnum = atoi(argv[1]);
server.dbnum = atoi(argv[1]);
if (server.dbnum < 1) {
if (server.dbnum < 1) {
err = "Invalid number of databases"; goto loaderr;
err = "Invalid number of databases"; goto loaderr;
}
}
} else if (!strcmp(argv[0],"slaveof") && argc == 3) {
} else if (!strc
asec
mp(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]);
server.replstate = REDIS_REPL_CONNECT;
server.replstate = REDIS_REPL_CONNECT;
} else if (!strcmp(argv[0],"glueoutputbuf") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"glueoutputbuf") && argc == 2) {
if ((server.glueoutputbuf = yesnotoi(argv[1])) == -1) {
if ((server.glueoutputbuf = yesnotoi(argv[1])) == -1) {
err = "argument must be 'yes' or 'no'"; goto loaderr;
err = "argument must be 'yes' or 'no'"; goto loaderr;
}
}
} else if (!strcmp(argv[0],"shareobjects") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"shareobjects") && argc == 2) {
if ((server.shareobjects = yesnotoi(argv[1])) == -1) {
if ((server.shareobjects = yesnotoi(argv[1])) == -1) {
err = "argument must be 'yes' or 'no'"; goto loaderr;
err = "argument must be 'yes' or 'no'"; goto loaderr;
}
}
} else if (!strcmp(argv[0],"daemonize") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"daemonize") && argc == 2) {
if ((server.daemonize = yesnotoi(argv[1])) == -1) {
if ((server.daemonize = yesnotoi(argv[1])) == -1) {
err = "argument must be 'yes' or 'no'"; goto loaderr;
err = "argument must be 'yes' or 'no'"; goto loaderr;
}
}
} else if (!strcmp(argv[0],"requirepass") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"requirepass") && argc == 2) {
server.requirepass = zstrdup(argv[1]);
server.requirepass = zstrdup(argv[1]);
} else if (!strcmp(argv[0],"pidfile") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"pidfile") && argc == 2) {
server.pidfile = zstrdup(argv[1]);
server.pidfile = zstrdup(argv[1]);
} else if (!strcmp(argv[0],"dbfilename") && argc == 2) {
} else if (!strc
asec
mp(argv[0],"dbfilename") && argc == 2) {
server.dbfilename = zstrdup(argv[1]);
server.dbfilename = zstrdup(argv[1]);
} else {
} else {
err = "Bad directive or wrong number of arguments"; goto loaderr;
err = "Bad directive or wrong number of arguments"; goto loaderr;
...
@@ -1140,7 +1140,7 @@ static void sendReplyToClient(aeEventLoop *el, int fd, void *privdata, int mask)
...
@@ -1140,7 +1140,7 @@ static void sendReplyToClient(aeEventLoop *el, int fd, void *privdata, int mask)
static struct redisCommand *lookupCommand(char *name) {
static struct redisCommand *lookupCommand(char *name) {
int j = 0;
int j = 0;
while(cmdTable[j].name != NULL) {
while(cmdTable[j].name != NULL) {
if (!strcmp(name,cmdTable[j].name)) return &cmdTable[j];
if (!strc
asec
mp(name,cmdTable[j].name)) return &cmdTable[j];
j++;
j++;
}
}
return NULL;
return NULL;
...
@@ -1164,10 +1164,9 @@ static int processCommand(redisClient *c) {
...
@@ -1164,10 +1164,9 @@ static int processCommand(redisClient *c) {
struct redisCommand *cmd;
struct redisCommand *cmd;
long long dirty;
long long dirty;
sdstolower(c->argv[0]->ptr);
/* The QUIT command is handled as a special case. Normal command
/* The QUIT command is handled as a special case. Normal command
* procs are unable to close the client connection safely */
* procs are unable to close the client connection safely */
if (!strcmp(c->argv[0]->ptr,"quit")) {
if (!strc
asec
mp(c->argv[0]->ptr,"quit")) {
freeClient(c);
freeClient(c);
return 0;
return 0;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment