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

jopen 9年前發布 | 13K 次閱讀 Redis NoSQL數據庫

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!