一个 C++ redis 集群管理工具
集群版 redis3.0 发布以来,官方仅提供了一个使用 ruby 写的集群管理工具,在创建 redis 集群时需要使用该工具。因为 ruby 中的一些包依赖问题,导致一些生手在建立 redis 集群时吃尽了苦头。于是 acl 库作者基于 acl 中的 redis 模块库,用 C++ 语言写了一个 redis 集群管理工具: redis_builder,没有过多的包依赖,可以方便 redis 使用者快速地建立 redis 集群,此外,该工具还可以进行一些集群的其它管理工作。
下面是 redis_builder 的一些功能:
./redis_build -h
usage: redis_builder.exe -h[help]
-s redis_addr[ip:port]
-a cmd[nodes|slots|create|add_node|del_node|node_id]
-N new_node[ip:port]
-S [add node as slave]
-f configure_file
for samples:
./redis_builder -s 127.0.0.1:6379 -a create -f cluster.xml
./redis_builder -s 127.0.0.1:6379 -a nodes
./redis_builder -s 127.0.0.1:6379 -a slots
./redis_builder -s 127.0.0.1:6379 -a del_node -I node_id
./redis_builder -s 127.0.0.1:6379 -a node_id
./redis_builder -s 127.0.0.1:6379 -a add_node -N 127.0.0.1:6380 -S
一、建立 redis 集群
在 启动所有的 redis 进程后,可以使用 redis_builder 将这些 redis 结点组成一个 redis 集群,redis_builder 使用 xml 格式的配置文件管理 redis 各个结点的关系,如该 cluster.xml 文件的内容例如:
<?xml version="1.0"?>
<xml>
<node addr = "192.168.136.172:16380">
<node addr = "192.168.136.172:16381" />
<node addr = "192.168.136.172:16382" />
</node>
<node addr = "192.168.136.172:16383">
<node addr = "192.168.136.172:16384" />
<node addr = "192.168.136.172:16385" />
</node>
<node addr = "192.168.136.172:16386">
<node addr = "192.168.136.172:16387" />
<node addr = "192.168.136.172:16388" />
</node>
</xml>
这样就可以运行:./redis_builder -a create -f cluster.xml,则redis 集群便会自动建立起来。
二、显示当前 redis 集群中的结点信息:
运行:./redis_builder -s 127.0.0.1:6379 -a nodes
三、编译 redis_builder
因为该工具依赖于 lib_acl/lib_protocol/lib_acl_cpp 三个 acl 基础库,所以需要首先编译这三个库:
$cd lib_acl; make
$cd lib_protocol; make
$cd lib_acl_cpp; make
然后再进入 app/redis_tools/redis_builder 编译:$cd app/redis_tools/redis_builder; make
四、参考
更多 redis_builder 的工具使用:https://github.com/zhengshuxin/acl/tree/master/app/redis_tools/redis_builder
acl 中的 redis 模块例子:https://github.com/zhengshuxin/acl/tree/master/lib_acl_cpp/samples/redis
acl github:https://github.com/zhengshuxin/acl