Redis 集群管理工具:redis-cluster-tool

jopen 9年前

redis-cluster-tool 是一个非常便利的 Redis 集群管理工具。

help

        Usage: redis-cluster-tool [-?hVds] [-v verbosity level] [-o output file]

                  [-c conf file] [-a addr] [-i interval]
                  [-p pid file] [-C command] [-r redis role]
                  [-t thread number] [-b buffer size]


    Options:
      -h, --help             : this help
      -V, --version          : show version and exit
      -d, --daemonize        : run as a daemon
      -s, --simple           : show the output not in detail
      -v, --verbosity=N      : set logging level (default: 5, min: 0, max: 11)
      -o, --output=S         : set logging file (default: stderr)
      -c, --conf-file=S      : set configuration file (default: conf/rct.yml)
      -a, --addr=S           : set redis cluster address (default: 127.0.0.1:6379)
      -i, --interval=N       : set interval in msec (default: 1000 msec)
      -p, --pid-file=S       : set pid file (default: off)
      -C, --command=S        : set command to execute (default: cluster_state)
      -r, --role=S           : set the role of the nodes that command to execute on (default: all, you can input: all, master or slave)
      -t, --thread=N         : set how many threads to run the job(default: 8)
      -b, --buffer=S         : set buffer size to run the job (default: 1048576 byte, unit:G/M/K)
    
    Commands:
        cluster_state                 :Show the cluster state.
        cluster_used_memory           :Show the cluster used memory.
        cluster_keys_num              :Show the cluster holds keys num.
        slots_state                   :Show the slots state.
        node_slot_num                 :Show the node hold slots number.
        new_nodes_name                :Show the new nodes name that not covered slots.
        cluster_rebalance             :Show the cluster how to rebalance.
        flushall                      :Flush all the cluster.
        cluster_config_get            :Get config from every node in the cluster and check consistency.
        cluster_config_set            :Set config to every node in the cluster.
        cluster_config_rewrite        :Rewrite every node config to echo node for the cluster.
        node_list                     :List the nodes

            del_keys                      :Delete keys in the cluster. The keys must match a given glob-style pattern.(This command not block the redis)

Example

Get the cluster state:

        $redis-cluster-tool -a 127.0.0.1:34501 -C cluster_state -r master
    master[127.0.0.1:34504] cluster_state is ok 
    master[127.0.0.1:34501] cluster_state is ok 
    master[127.0.0.1:34502] cluster_state is ok 
    master[127.0.0.1:34503] cluster_state is ok 
    all nodes cluster_state is ok
    
Get the cluster used memory:

    $redis-cluster-tool -a 127.0.0.1:34501 -C cluster_used_memory -r master
    master[127.0.0.1:34504] used 195 M 25%
    master[127.0.0.1:34501] used 195 M 25%
    master[127.0.0.1:34502] used 195 M 25%
    master[127.0.0.1:34503] used 195 M 25%
    cluster used 780 M

Rebalance the cluster slots:

    $redis-cluster-tool -a 127.0.0.1:34501 -C cluster_rebalance
    --from e1a4ba9922555bfc961f987213e3d4e6659c9316 --to 785862477453bc6b91765ffba0b5bc803052d70a --slots 2048
    --from 437c719f50dc9d0745032f3b280ce7ecc40792ac --to cb8299390ce53cefb2352db34976dd768708bf64 --slots 2048
    --from a497fc619d4f6c93bd4afb85f3f8a148a3f35adb --to a0cf6c1f12d295cd80f5811afab713cdc858ea30 --slots 2048
    --from 0bdef694d08cb3daab9aac518d3ad6f8035ec896 --to 471eaf98ff43ba9a0aadd9579f5af1609239c5b7 --slots 2048


Then you can use "redis-trib.rb reshard --yes --from e1a4ba9922555bfc961f987213e3d4e6659c9316 --to 785862477453bc6b91765ffba0b5bc803052d70a --slots 2048 127.0.0.1:34501" to rebalance the cluster slots 
    
Flushall the cluster:

    $redis-cluster-tool -a 127.0.0.1:34501 -C flushall -s
    Do you really want to execute the "flushall"?
    please input "yes" or "no" :
    
    yes
    OK

Get a config from every node in cluster:

    $redis-cluster-tool -a 127.0.0.1:34501 -C "cluster_config_get maxmemory" -r master
    master[127.0.0.1:34501] config maxmemory is 1048576000 (1000MB)
    master[127.0.0.1:34502] config maxmemory is 1048576000 (1000MB)
    master[127.0.0.1:34503] config maxmemory is 1048576000 (1000MB)
    master[127.0.0.1:34504] config maxmemory is 1048576000 (1000MB)

    All nodes config are Consistent
    cluster total maxmemory: 4194304000 (4000MB)

Set a config from every node in cluster:

    $redis-cluster-tool -a 127.0.0.1:34501 -C "cluster_config_set maxmemory 10000000" -s
    Do you really want to execute the "cluster_config_set"?
    please input "yes" or "no" :
    yes
    
    OK

Delete keys in the cluster:

    $redis-cluster-tool -a 127.0.0.1:34501 -C "del_keys abc*"
    Do you really want to execute the "del_keys"?
    please input "yes" or "no" :
    yes
    delete keys job is running...
    delete keys job finished, deleted: 999999 keys, used: 4 s

项目主页:http://www.open-open.com/lib/view/home/1447936671431