需求:模拟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\n",'$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 ~]$

  

通过shell模拟redis-trib.rb info的输出的更多相关文章

  1. redis集群错误解决:/usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis/client.rb:79:in `call': ERR Slot 15495 is already busy (Redis::CommandError)

    错误信息: /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis/client.rb:79:in `call': ERR Slot 15495 is al ...

  2. adb shell模拟点击事件(input tap)

    前言:appium定位也不是万能的,有些元素还是定位不到,这个时候只能换一个方式定位了,可以使用这个adb shell模拟点击. 1.input可以实现的功能 输入文本信息:input text gu ...

  3. redis 模拟redis server接收信息

    一.实现说明 客户端使用jedis正常set值到redis服务器   2. 模拟服务器接收jedis发送的信息 二.jedis客户端代码 package com.ahd.redis; import r ...

  4. 模拟实现JSON.stringiry 的格式化输出

    前言 这是一道笔试题,要求模拟实现JSON.stringiry 的格式化输出,按照层级缩进,输出易读格式,即完成以下方法 JSON.stringify(jsObj, null, 4); // 缩进4个 ...

  5. 强大的shell(一键redis,mysql,php,openresty,jdk)

    前序 集成了一键安装离线包redis,mysql,php,openresty,jdk,系统优化等脚本, 一个shell搞掂. JDK:自动识别本地安装包,自动解压,部署,配置环境变量. REDIS:自 ...

  6. PostgreSQL异步客户端(并模拟redis 数据结构)

    以前为了不在游戏逻辑(对象属性)变更时修改数据库,就弄了个varchar字段来表示json,由服务器逻辑(读取到内存)去操作它. 但这对运维相当不友好,也不能做一些此Json数据里查询. 所以后面就用 ...

  7. shell、redis使用

    一.跳板机 来源:什么是跳板机 SSH[Secure Shell](远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监 ...

  8. 使用adb shell 模拟点击事件

    针对问题[appium无法点击到某一内容,需要使用adb去执行点击事件] 需要命令: adb shell adb devices input [input可以实现的功能]: 输入文本信息:input ...

  9. shell模拟“多线程”

      shell中并没有真正意义上的多线程,要实现"多线程"可以启动多个子进程,并将子进程放入后台执行来模拟多线程,最大程度利用CPU性能. 循环中执行并行代码 #!/bin/bas ...

随机推荐

  1. static静态变量在c++类中的应用实例

    这个static 如果写在类中,那么就可以得到一个局部的静态变量,也就是说可以实现在类内保存某个特殊值不随函数释放而消失的作用.应用中由于赋初值的位置不对而报错,错误提示为:“无法解析外部符号 ... ...

  2. Maven: 每次更新Maven Project ,JAVA 版本都变为1.5

    由于Maven默认编译环境是JAVA 1.5 ,所以我们需要在pom.xml指定编译插件版本号,这样就可以保证更新Maven project版本不变. <!-- java编译插件 --> ...

  3. 我的一个react路由之旅(步骤及详图)

    今天开始react一个重要部分的xiao~习,路由~(过程截图,最后附代码) 以下代码只能骗糊涂蛋子,没错,就是我自己,不要打算让我敲出多高级的东西~ 理论性知识几乎没有,请不要打算让我给你说原理啥的 ...

  4. Spring Boot 2.x基础教程:使用国产数据库连接池Druid

    上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP.接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid. Druid是由阿里巴巴数据库事 ...

  5. 深入浅出 Serverless:优势、意义与应用

    Serverless 是炙手可热的技术,被认为是云计算发展的未来方向.尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于业务逻辑,实现全栈工程师的角色转变. Serverle ...

  6. ubuntu16.04+Pangolin安装

    学习视觉Slam十四讲到第三章的可视化演示的时候需要Panglolin的使用,因此在Githup上下载了安装包:https://github.com/stevenlovegrove/Pangolin ...

  7. Codeforces_734_F

    http://codeforces.com/problemset/problem/734/F x|y + x&y = x+y. #include<iostream> #includ ...

  8. HDU_3853_概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3853 又因为总期望为子期望的加权和,加权因子为子期望的转移概率,所以得到:dp[ i ][ j ]= p1 * ...

  9. k8s系列---资源指标API及自定义指标API

    不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法  https://www.linuxea.com/2112. ...

  10. logstash 配置文件语法

    需要一个配置文件 管理输入.过滤器和输出相关的配置.配置文件内容格式如下: # 输入 input { ... } # 过滤器 filter { ... } # 输出 output { ... } 先来 ...