redis集群状态信息维护脚本

    近期在做redis相关的东西。须要把2台redis切分成16个shard。 16个主shard分布在4台128G的机器上,从shard分布在12台64G的机器上。因为机器太多,查询相关的信息不太方便。特别是我要手动的去查询或者删除某些信息就须要去每台机器上查看,当然也能够通过相关的程序来查询和删除,这里主要介绍怎样利用linux shell来实现这个目标。

详细的脚本内如例如以下:

#!/bin/bash topic=(xx.x.xx.xx:6385 xx.x.xxx.xx:6387) topic_slave=(xx.xx.xx.xx:7382 xx.xx.xx.x:7382) function lookup() { i=0 servers=($1) count=${#servers[@]} ops=$2 while [ $i -lt $count ] do server=${servers[$i]} host=`echo $server | cut -d: -f1` port=`echo $server | cut -d: -f2` echo "Redis[$host:$port] $ops" (echo -en "$ops\r\n"; sleep 1) | nc $host $port i=$((i+1)) done } cmdstr=$@ prefix=`echo $cmdstr | cut -d' ' -f1` key=`echo $cmdstr | cut -d' ' -f2-` case "$prefix" in t) lookup "${topic[*]}" "$key" ;; ts) lookup "${topic_slave[*]}" "$key" ;; esac exit 0

详细命令方式为: sh redis-cluster.sh t info 为查询redis集群的信息, sh redis-cluster.sh t get key 获取集群中key的值。这里t指的是主shard, ts相应的是从shard,事实上也能够依照数据类型来分shard进行查询,原理是比較类似的。

       利用以上脚本能够比較方便的指导集群的信息,比方占用内存的信息能够採用下面方式:#!/bin/bash sh redis-cluster.sh t info | grep "used_memory_human" | awk -F":" 'BEGIN{sum = 0}{ t=substr($2, length($2)-1, 1); s=substr($2, 0, length($2) -2 ); if(t=="G") {sum += s*1024;} else {sum += s;}} END{print sum}'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值