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