Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xindoo
redis
提交
de499f7f
R
redis
项目概览
xindoo
/
redis
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
de499f7f
编写于
8月 29, 2012
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sentinel: INFO command implementation.
上级
b65f3c21
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
62 addition
and
1 deletion
+62
-1
src/sentinel.c
src/sentinel.c
+62
-1
未找到文件。
src/sentinel.c
浏览文件 @
de499f7f
...
...
@@ -366,6 +366,7 @@ dictType leaderVotesDictType = {
/* =========================== Initialization =============================== */
void
sentinelCommand
(
redisClient
*
c
);
void
sentinelInfoCommand
(
redisClient
*
c
);
struct
redisCommand
sentinelcmds
[]
=
{
{
"ping"
,
pingCommand
,
1
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
...
...
@@ -373,7 +374,8 @@ struct redisCommand sentinelcmds[] = {
{
"subscribe"
,
subscribeCommand
,
-
2
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"unsubscribe"
,
unsubscribeCommand
,
-
1
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"psubscribe"
,
psubscribeCommand
,
-
2
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"punsubscribe"
,
punsubscribeCommand
,
-
1
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
}
{
"punsubscribe"
,
punsubscribeCommand
,
-
1
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"info"
,
sentinelInfoCommand
,
-
1
,
""
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
}
};
/* This function overwrites a few normal Redis config default with Sentinel
...
...
@@ -2046,6 +2048,65 @@ numargserr:
(
char
*
)
c
->
argv
[
1
]
->
ptr
);
}
void
sentinelInfoCommand
(
redisClient
*
c
)
{
char
*
section
=
c
->
argc
==
2
?
c
->
argv
[
1
]
->
ptr
:
"default"
;
sds
info
=
sdsempty
();
int
defsections
=
!
strcasecmp
(
section
,
"default"
);
int
sections
=
0
;
if
(
c
->
argc
>
2
)
{
addReply
(
c
,
shared
.
syntaxerr
);
return
;
}
if
(
!
strcasecmp
(
section
,
"server"
)
||
defsections
)
{
if
(
sections
++
)
info
=
sdscat
(
info
,
"
\r\n
"
);
sds
serversection
=
genRedisInfoString
(
"server"
);
info
=
sdscatlen
(
info
,
serversection
,
sdslen
(
serversection
));
sdsfree
(
serversection
);
}
if
(
!
strcasecmp
(
section
,
"sentinel"
)
||
defsections
)
{
dictIterator
*
di
;
dictEntry
*
de
;
int
master_id
=
0
;
if
(
sections
++
)
info
=
sdscat
(
info
,
"
\r\n
"
);
info
=
sdscatprintf
(
info
,
"# Sentinel
\r\n
"
"sentinel_masters:%lu
\r\n
"
"sentinel_tilt:%d
\r\n
"
"sentinel_running_scripts:%d
\r\n
"
"sentinel_scripts_queue_length:%ld
\r\n
"
,
dictSize
(
sentinel
.
masters
),
sentinel
.
tilt
,
sentinel
.
running_scripts
,
listLength
(
sentinel
.
scripts_queue
));
di
=
dictGetIterator
(
sentinel
.
masters
);
while
((
de
=
dictNext
(
di
))
!=
NULL
)
{
sentinelRedisInstance
*
ri
=
dictGetVal
(
de
);
char
*
status
=
"ok"
;
if
(
ri
->
flags
&
SRI_O_DOWN
)
status
=
"odown"
;
else
if
(
ri
->
flags
&
SRI_S_DOWN
)
status
=
"sdown"
;
info
=
sdscatprintf
(
info
,
"master%d:name=%s,status=%s,address=%s:%d,"
"slaves=%lu,sentinels=%lu
\r\n
"
,
master_id
++
,
ri
->
name
,
status
,
ri
->
addr
->
ip
,
ri
->
addr
->
port
,
dictSize
(
ri
->
slaves
),
dictSize
(
ri
->
sentinels
)
+
1
);
}
dictReleaseIterator
(
di
);
}
addReplySds
(
c
,
sdscatprintf
(
sdsempty
(),
"$%lu
\r\n
"
,
(
unsigned
long
)
sdslen
(
info
)));
addReplySds
(
c
,
info
);
addReply
(
c
,
shared
.
crlf
);
}
/* ===================== SENTINEL availability checks ======================= */
/* Is this instance down from our point of view? */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录