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
51e01d9b
Commit
51e01d9b
authored
Nov 12, 2009
by
antirez
Browse files
Merge
git://github.com/ianxm/redis
parents
96d8b4ee
62e920df
Changes
1
Show whitespace changes
Inline
Side-by-side
redis-cli.c
View file @
51e01d9b
...
@@ -50,6 +50,7 @@ static struct config {
...
@@ -50,6 +50,7 @@ static struct config {
char
*
hostip
;
char
*
hostip
;
int
hostport
;
int
hostport
;
long
repeat
;
long
repeat
;
int
dbnum
;
}
config
;
}
config
;
struct
redisCommand
{
struct
redisCommand
{
...
@@ -175,10 +176,11 @@ static sds cliReadLine(int fd) {
...
@@ -175,10 +176,11 @@ static sds cliReadLine(int fd) {
return
sdstrim
(
line
,
"
\r\n
"
);
return
sdstrim
(
line
,
"
\r\n
"
);
}
}
static
int
cliReadSingleLineReply
(
int
fd
)
{
static
int
cliReadSingleLineReply
(
int
fd
,
int
quiet
)
{
sds
reply
=
cliReadLine
(
fd
);
sds
reply
=
cliReadLine
(
fd
);
if
(
reply
==
NULL
)
return
1
;
if
(
reply
==
NULL
)
return
1
;
if
(
!
quiet
)
printf
(
"%s
\n
"
,
reply
);
printf
(
"%s
\n
"
,
reply
);
return
0
;
return
0
;
}
}
...
@@ -237,13 +239,13 @@ static int cliReadReply(int fd) {
...
@@ -237,13 +239,13 @@ static int cliReadReply(int fd) {
switch
(
type
)
{
switch
(
type
)
{
case
'-'
:
case
'-'
:
printf
(
"(error) "
);
printf
(
"(error) "
);
cliReadSingleLineReply
(
fd
);
cliReadSingleLineReply
(
fd
,
0
);
return
1
;
return
1
;
case
'+'
:
case
'+'
:
return
cliReadSingleLineReply
(
fd
);
return
cliReadSingleLineReply
(
fd
,
0
);
case
':'
:
case
':'
:
printf
(
"(integer) "
);
printf
(
"(integer) "
);
return
cliReadSingleLineReply
(
fd
);
return
cliReadSingleLineReply
(
fd
,
0
);
case
'$'
:
case
'$'
:
return
cliReadBulkReply
(
fd
);
return
cliReadBulkReply
(
fd
);
case
'*'
:
case
'*'
:
...
@@ -254,6 +256,28 @@ static int cliReadReply(int fd) {
...
@@ -254,6 +256,28 @@ static int cliReadReply(int fd) {
}
}
}
}
static
int
selectDb
(
int
fd
)
{
int
retval
;
sds
cmd
;
char
type
;
if
(
config
.
dbnum
==
0
)
return
0
;
cmd
=
sdsempty
();
cmd
=
sdscatprintf
(
cmd
,
"SELECT %d
\r\n
"
,
config
.
dbnum
);
anetWrite
(
fd
,
cmd
,
sdslen
(
cmd
));
anetRead
(
fd
,
&
type
,
1
);
if
(
type
<=
0
||
type
!=
'+'
)
return
1
;
retval
=
cliReadSingleLineReply
(
fd
,
1
);
if
(
retval
)
{
close
(
fd
);
return
retval
;
}
return
0
;
}
static
int
cliSendCommand
(
int
argc
,
char
**
argv
)
{
static
int
cliSendCommand
(
int
argc
,
char
**
argv
)
{
struct
redisCommand
*
rc
=
lookupCommand
(
argv
[
0
]);
struct
redisCommand
*
rc
=
lookupCommand
(
argv
[
0
]);
int
fd
,
j
,
retval
=
0
;
int
fd
,
j
,
retval
=
0
;
...
@@ -271,6 +295,13 @@ static int cliSendCommand(int argc, char **argv) {
...
@@ -271,6 +295,13 @@ static int cliSendCommand(int argc, char **argv) {
}
}
if
((
fd
=
cliConnect
())
==
-
1
)
return
1
;
if
((
fd
=
cliConnect
())
==
-
1
)
return
1
;
/* Select db number */
retval
=
selectDb
(
fd
);
if
(
retval
)
{
fprintf
(
stderr
,
"Error setting DB num
\n
"
);
return
1
;
}
while
(
config
.
repeat
--
)
{
while
(
config
.
repeat
--
)
{
/* Build the command to send */
/* Build the command to send */
cmd
=
sdsempty
();
cmd
=
sdsempty
();
...
@@ -328,6 +359,9 @@ static int parseOptions(int argc, char **argv) {
...
@@ -328,6 +359,9 @@ static int parseOptions(int argc, char **argv) {
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
)
&&
!
lastarg
)
{
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
)
&&
!
lastarg
)
{
config
.
repeat
=
strtoll
(
argv
[
i
+
1
],
NULL
,
10
);
config
.
repeat
=
strtoll
(
argv
[
i
+
1
],
NULL
,
10
);
i
++
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-n"
)
&&
!
lastarg
)
{
config
.
dbnum
=
atoi
(
argv
[
i
+
1
]);
i
++
;
}
else
{
}
else
{
break
;
break
;
}
}
...
@@ -360,6 +394,7 @@ int main(int argc, char **argv) {
...
@@ -360,6 +394,7 @@ int main(int argc, char **argv) {
config
.
hostip
=
"127.0.0.1"
;
config
.
hostip
=
"127.0.0.1"
;
config
.
hostport
=
6379
;
config
.
hostport
=
6379
;
config
.
repeat
=
1
;
config
.
repeat
=
1
;
config
.
dbnum
=
0
;
firstarg
=
parseOptions
(
argc
,
argv
);
firstarg
=
parseOptions
(
argc
,
argv
);
argc
-=
firstarg
;
argc
-=
firstarg
;
...
@@ -371,8 +406,8 @@ int main(int argc, char **argv) {
...
@@ -371,8 +406,8 @@ int main(int argc, char **argv) {
argvcopy
[
j
]
=
sdsnew
(
argv
[
j
]);
argvcopy
[
j
]
=
sdsnew
(
argv
[
j
]);
if
(
argc
<
1
)
{
if
(
argc
<
1
)
{
fprintf
(
stderr
,
"usage: redis-cli [-h host] [-p port] [-r repeat_times] cmd arg1 arg2 arg3 ... argN
\n
"
);
fprintf
(
stderr
,
"usage: redis-cli [-h host] [-p port] [-r repeat_times]
[-n db_num]
cmd arg1 arg2 arg3 ... argN
\n
"
);
fprintf
(
stderr
,
"usage: echo
\"
argN
\"
| redis-cli [-h host] [-p port] -r
[
repeat_times] cmd arg1 arg2 ... arg(N-1)
\n
"
);
fprintf
(
stderr
,
"usage: echo
\"
argN
\"
| redis-cli [-h host] [-p port]
[
-r repeat_times]
[-n db_num]
cmd arg1 arg2 ... arg(N-1)
\n
"
);
fprintf
(
stderr
,
"
\n
If a pipe from standard input is detected this data is used as last argument.
\n\n
"
);
fprintf
(
stderr
,
"
\n
If a pipe from standard input is detected this data is used as last argument.
\n\n
"
);
fprintf
(
stderr
,
"example: cat /etc/passwd | redis-cli set my_passwd
\n
"
);
fprintf
(
stderr
,
"example: cat /etc/passwd | redis-cli set my_passwd
\n
"
);
fprintf
(
stderr
,
"example: redis-cli get my_passwd
\n
"
);
fprintf
(
stderr
,
"example: redis-cli get my_passwd
\n
"
);
...
...
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