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
b9cbd04b
Commit
b9cbd04b
authored
Jun 28, 2018
by
zhaozhao.zz
Browse files
clients: add type option for client list
parent
f5538642
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/debug.c
View file @
b9cbd04b
...
...
@@ -1077,7 +1077,7 @@ void sigsegvHandler(int sig, siginfo_t *info, void *secret) {
infostring
=
genRedisInfoString
(
"all"
);
serverLogRaw
(
LL_WARNING
|
LL_RAW
,
infostring
);
serverLogRaw
(
LL_WARNING
|
LL_RAW
,
"
\n
------ CLIENT LIST OUTPUT ------
\n
"
);
clients
=
getAllClientsInfoString
();
clients
=
getAllClientsInfoString
(
-
1
);
serverLogRaw
(
LL_WARNING
|
LL_RAW
,
clients
);
sdsfree
(
infostring
);
sdsfree
(
clients
);
...
...
src/networking.c
View file @
b9cbd04b
...
...
@@ -1545,7 +1545,7 @@ sds catClientInfoString(sds s, client *client) {
client
->
lastcmd
?
client
->
lastcmd
->
name
:
"NULL"
);
}
sds
getAllClientsInfoString
(
void
)
{
sds
getAllClientsInfoString
(
int
type
)
{
listNode
*
ln
;
listIter
li
;
client
*
client
;
...
...
@@ -1554,6 +1554,7 @@ sds getAllClientsInfoString(void) {
listRewind
(
server
.
clients
,
&
li
);
while
((
ln
=
listNext
(
&
li
))
!=
NULL
)
{
client
=
listNodeValue
(
ln
);
if
(
type
!=
-
1
&&
getClientType
(
client
)
!=
type
)
continue
;
o
=
catClientInfoString
(
o
,
client
);
o
=
sdscatlen
(
o
,
"
\n
"
,
1
);
}
...
...
@@ -1575,6 +1576,7 @@ void clientCommand(client *c) {
" type (normal|master|slave|pubsub) -- Kill connections by type."
,
" skipme (yes|no) -- Skip killing current connection (default: yes)."
,
"list -- Return information about client connections."
,
" type (normal|master|slave|pubsub) -- Return information about client connections by type."
,
"pause <timeout> -- Suspend all Redis clients for <timout> milliseconds."
,
"reply (on|off|skip) -- Control the replies sent to the current connection."
,
"setname <name> -- Assign the name <name> to the current connection."
,
...
...
@@ -1585,9 +1587,21 @@ NULL
}
else
if
(
!
strcasecmp
(
c
->
argv
[
1
]
->
ptr
,
"id"
)
&&
c
->
argc
==
2
)
{
/* CLIENT ID */
addReplyLongLong
(
c
,
c
->
id
);
}
else
if
(
!
strcasecmp
(
c
->
argv
[
1
]
->
ptr
,
"list"
)
&&
c
->
argc
==
2
)
{
}
else
if
(
!
strcasecmp
(
c
->
argv
[
1
]
->
ptr
,
"list"
))
{
/* CLIENT LIST */
sds
o
=
getAllClientsInfoString
();
int
type
=
-
1
;
if
(
c
->
argc
==
4
&&
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"type"
))
{
type
=
getClientTypeByName
(
c
->
argv
[
3
]
->
ptr
);
if
(
type
==
-
1
)
{
addReplyErrorFormat
(
c
,
"Unknown client type '%s'"
,
(
char
*
)
c
->
argv
[
3
]
->
ptr
);
return
;
}
}
else
if
(
c
->
argc
!=
2
)
{
addReply
(
c
,
shared
.
syntaxerr
);
return
;
}
sds
o
=
getAllClientsInfoString
(
type
);
addReplyBulkCBuffer
(
c
,
o
,
sdslen
(
o
));
sdsfree
(
o
);
}
else
if
(
!
strcasecmp
(
c
->
argv
[
1
]
->
ptr
,
"reply"
)
&&
c
->
argc
==
3
)
{
...
...
src/redis-cli.c
View file @
b9cbd04b
...
...
@@ -1088,7 +1088,7 @@ static int cliSendCommand(int argc, char **argv, long repeat) {
(
argc
==
2
&&
!
strcasecmp
(
command
,
"cluster"
)
&&
(
!
strcasecmp
(
argv
[
1
],
"nodes"
)
||
!
strcasecmp
(
argv
[
1
],
"info"
)))
||
(
argc
=
=
2
&&
!
strcasecmp
(
command
,
"client"
)
&&
(
argc
>
=
2
&&
!
strcasecmp
(
command
,
"client"
)
&&
!
strcasecmp
(
argv
[
1
],
"list"
))
||
(
argc
==
3
&&
!
strcasecmp
(
command
,
"latency"
)
&&
!
strcasecmp
(
argv
[
1
],
"graph"
))
||
...
...
src/server.h
View file @
b9cbd04b
...
...
@@ -1421,7 +1421,7 @@ void getClientsMaxBuffers(unsigned long *longest_output_list,
unsigned
long
*
biggest_input_buffer
);
char
*
getClientPeerId
(
client
*
client
);
sds
catClientInfoString
(
sds
s
,
client
*
client
);
sds
getAllClientsInfoString
(
void
);
sds
getAllClientsInfoString
(
int
type
);
void
rewriteClientCommandVector
(
client
*
c
,
int
argc
,
...);
void
rewriteClientCommandArgument
(
client
*
c
,
int
i
,
robj
*
newval
);
void
replaceClientCommandVector
(
client
*
c
,
int
argc
,
robj
**
argv
);
...
...
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