一个 C++ redis 集群管理工具

jopen 10年前

    集群版 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