zoukankan      html  css  js  c++  java
  • 通过shell模拟redis-trib.rb info的输出

    需求:模拟redis-trib.rb info ip:port输出的结果

    如:

    [redis@lxd-vm3 ~]$ redis-trib.rb info 5.5.5.101:29001
    /usr/local/ruby2.5.1/lib/ruby/gems/2.5.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning: constant ::Fixnum is deprecated
    5.5.5.103:29002 (a76debe0...) -> 1514 keys | 5463 slots | 1 slaves.
    5.5.5.102:29001 (eb7dfeda...) -> 8196781 keys | 5457 slots | 1 slaves.
    5.5.5.101:29003 (7c79008a...) -> 4497 keys | 5464 slots | 1 slaves.
    [OK] 8202792 keys in 3 masters.
    500.66 keys per slot on average.
    

    通过shell脚本实现类似的:

    redis-cli -h $1 -p $2 -c cluster slots | xargs -n8 |  awk '{print $3":"$4" "$2-$1+1}' > tmp_slot_num
    awk '{a[$1]++}END{for(i in a)print i}' tmp_slot_num | sort -nk2 -t ":" > ip_port
    
    total_keys=0
    master_num=0
    for i in `cat ip_port`
    do
    	let master_num=master_num+1
    	instance_slots=0
    	instance_keys=0
    	redis_ip=$(echo $i | awk -F[:] '{print $1}')
    	redis_port=$(echo $i | awk -F[:] '{print $2}')
    	instance_keys=$(redis-cli -c -h $redis_ip -p $redis_port dbsize)
    	let total_keys=total_keys+instance_keys
    	slots=($(awk '/'$i'/{print $2}' tmp_slot_num))
    	len=${#slots[@]}
    	for(( j=0;j<=len-1;j++))
    	do
    		let instance_slots=instance_slots+${slots[j]}
    	done
    	echo "$redis_ip:$redis_port->$instance_keys keys->$instance_slots slots"
    done
    echo "[ok] $total_keys keys in $master_num masters."
    avg=$(awk 'BEGIN{printf "%.2f
    ",'$total_keys'/16384}')
    echo "$avg keys per slot on average."
    

    测试结果

    [redis@lxd-vm3 ~]$ sh a10.sh 5.5.5.101 29001
    5.5.5.102:29001->8196781 keys->5457 slots
    5.5.5.103:29002->1514 keys->5463 slots
    5.5.5.101:29003->4497 keys->5464 slots
    [ok] 8202792 keys in 3 masters.
    500.66 keys per slot on average.
    [redis@lxd-vm3 ~]$ 
    

      

  • 相关阅读:
    最大子段和之可交换
    最大子段和之M子段和
    前端开发-日常开发沉淀之生产环境与开发环境
    开发技巧-解决打开谷歌浏览器跳转问题
    前端调试-跨域解决方式
    postman自动化,测试脚本
    自动化脚本测试,postman使用沉淀
    HMAC-SHA256 签名方法各个语音的实现方式之前端JavaScriptes6
    React中redux表单编辑
    前端JavaScript获取时间戳
  • 原文地址:https://www.cnblogs.com/imdba/p/10323490.html
Copyright © 2011-2022 走看看