需求:任意指定一个key获取该key所处在哪个node节点上。

说明:redis自带的命令可以知道一个key所属的slot,可以知道node master对应哪些slot,但没有key和node的对应关系,使用该脚本,再也不需要猜了,可以在规划key的时候参考一下。

#获取指定的key在哪个slot上,该key可以是存在的或者不存在的均可。
key_slot=`redis-cli -h 5.5.5.101 -p -a abc123 -c cluster keyslot $` #获取node和slot的分布,输出格式如下,开始的#是注释,并非有效数据
#5.5.5.101|-
#5.5.5.102|-
#5.5.5.103|-
node_slot=`redis-cli -h 5.5.5.101 -p -a abc123 -c cluster nodes | grep master | awk -F' |:' '{print $2"|"$NF}'` #判断是否找到对应的slot
find_tag=
for i in $node_slot
do
node_ip=`echo $i | awk -F '[|]' '{print $1}'`
start_slot=`echo $i | awk -F '[|]' '{print $2}' | awk -F '[-]' '{print $1}'`
end_slot=`echo $i | awk -F '[|]' '{print $2}' | awk -F '[-]' '{print $2}'`
for((j=$start_slot;j<=$end_slot;j++))
do
if [[ $j == $key_slot ]];then
echo $node_ip
find_tag=
fi
done
if [[ $find_tag == ]];then
#找到后,退出循环,因为slot不会有重复的
break
fi
done

测试

[redis@lxd-vm1 ~]$ sh get_node.sh a
5.5.5.103
[redis@lxd-vm1 ~]$ sh get_node.sh b
5.5.5.101
[redis@lxd-vm1 ~]$ sh get_node.sh c
5.5.5.102
[redis@lxd-vm1 ~]$ sh get_node.sh {abc}
5.5.5.102
[redis@lxd-vm1 ~]$ sh get_node.sh {abc}
5.5.5.102
[redis@lxd-vm1 ~]$ sh get_node.sh hello{lxd}world
5.5.5.101
[redis@lxd-vm1 ~]$ sh get_node.sh new{lxd}year
5.5.5.101
[redis@lxd-vm1 ~]$

最新文章

  1. DEDE 常用的调用方法
  2. 第二,C语言示例
  3. MySQL 第二篇
  4. [后端人员耍前端系列]Bootstrap篇:30分钟快速掌握Bootstrap
  5. MAFFT多重序列比对--(附比对彩标方法)
  6. SQL2005中的事务与锁定(五)- 转载
  7. Entity Framework问题:ReferentialConstraint 中的依赖属性映射由存储生成的列
  8. memcached全面剖析--3
  9. settimeout vs setinternal
  10. iOS 集成支付宝遇到的问题(续)
  11. 5-Django接口数据处理
  12. RPC框架-RMI、RPC和CORBA的区别
  13. BZOJ4653 [NOI2016] 区间 【线段树】
  14. jquery和js检测浏览器窗口尺寸和分辨率
  15. linux 函数库使用
  16. 葡萄城报表模板库再次更新!补充医院Dashboard及房地产销售行业报表
  17. SpringBoot实战(五)之Thymeleaf
  18. Node.js发送电子邮件
  19. Appium + Python App自动化(2)第一个脚本
  20. 初看Mybatis 源码 (三) SQL是怎么执行的

热门文章

  1. sql中常量和变量的引用
  2. (七)mybatis批量操作,分页插件
  3. python练习——第2题
  4. Window下,Jenkins忘记密码解决方法
  5. 全网一定不是最好懂的C++线性筛素数
  6. 高精度模板(Vector实现更加方便)
  7. c++利用初始化列表在类内部和类外部定义构造函数的区别
  8. ubuntu docker中crontab任务不执行的问题
  9. linux 使用nfs 服务实现远程共享
  10. hadoop local、伪分布 模式