Redis 集群管理工具:redis-cluster-tool
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