redis集群的测试

 

原文:http://blog.sina.com.cn/s/blog_53b45c4d0102wg10.html

1、测试存取值

客户端连接集群redis-cli需要带上 -c ,redis-cli -c -p 端口号

  1. [root@localhost redis01]# ./redis-cli -c -p 7001
  2. 127.0.0.1:7001> set name andy
  3. -> Redirected to slot [5798] located at 127.0.0.1:7002
  4. OK
  5. 127.0.0.1:7002> get name
  6. "andy"
  7. 127.0.0.1:7002>

根据redis-cluster的key值分配,name应该分配到节点7002[5461-10922]上,上面显示redis cluster自动从7001跳转到了7002节点。

我们可以测试一下7006从节点获取name值

[plain] view plain copy  
  1. [root@localhost redis06]# ./redis-cli -c -p 7006
  2. 127.0.0.1:7006> get name
  3. -> Redirected to slot [5798] located at 127.0.0.1:7002
  4. "andy"
  5. 127.0.0.1:7002>

7006位7003的从节点,从上面也是自动跳转至7002获取值,这也是redis cluster的特点,它是去中心化,每个节点都是对等的,连接哪个节点都可以获取和设置数据。

四、集群节点选举

现在模拟将7002节点挂掉,按照redis-cluster原理会选举会将 7002的从节点7005选举为主节点。

[plain] view plain copy  
  1. [root@localhost redis-cluster]# ps -ef | grep redis
  2. root       7950      1  0 12:50 ?        00:00:28 ./redis-server 127.0.0.1:7001 [cluster]
  3. root       7952      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7002 [cluster]
  4. root       7956      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7003 [cluster]
  5. root       7960      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7004 [cluster]
  6. root       7964      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7005 [cluster]
  7. root       7966      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7006 [cluster]
  8. root      11346  10581  0 14:57 pts/2    00:00:00 grep --color=auto redis
  9. [root@localhost redis-cluster]# kill 7952

在查看集群中的7002节点

[plain] view plain copy  
  1. [root@localhost redis-cluster]#
  2. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
  3. [ERR] Sorry, can't connect to node 127.0.0.1:7002
  4. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7005
  5. >>> Performing Cluster Check (using node 127.0.0.1:7005)
  6. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  7. slots:5461-10922 (5462 slots) master
  8. 0 additional replica(s)
  9. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  12. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  13. slots:10923-16383 (5461 slots) master
  14. 1 additional replica(s)
  15. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  16. slots:0-5460 (5461 slots) master
  17. 1 additional replica(s)
  18. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  19. slots: (0 slots) slave
  20. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  21. [OK] All nodes agree about slots configuration.
  22. >>> Check for open slots...
  23. >>> Check slots coverage...
  24. [OK] All 16384 slots covered.
  25. [root@localhost redis-cluster]#

可以看到集群连接不了7002节点,而7005有原来的S转换为M节点,代替了原来的7002节点。我们可以获取name值:

[plain] view plain copy  
  1. [root@localhost redis01]# ./redis-cli -c -p 7001
  2. 127.0.0.1:7001> get name
  3. -> Redirected to slot [5798] located at 127.0.0.1:7005
  4. "andy"
  5. 127.0.0.1:7005>
  6. 127.0.0.1:7005>

从7001节点连入,自动跳转到7005节点,并且获取name值。

现在我们将7002节点恢复,看是否会自动加入集群中以及充当的M还是S节点。

[plain] view plain copy  
  1. [root@localhost redis-cluster]# cd redis02
  2. [root@localhost redis02]# ./redis-server redis.conf
  3. [root@localhost redis02]#

在check一下7002节点

[plain] view plain copy  
  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
  2. >>> Performing Cluster Check (using node 127.0.0.1:7002)
  3. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  4. slots: (0 slots) slave
  5. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  6. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  7. slots:10923-16383 (5461 slots) master
  8. 1 additional replica(s)
  9. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  10. slots:5461-10922 (5462 slots) master
  11. 1 additional replica(s)
  12. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  13. slots: (0 slots) slave
  14. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  15. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  16. slots: (0 slots) slave
  17. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  18. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  19. slots:0-5460 (5461 slots) master
  20. 1 additional replica(s)
  21. [OK] All nodes agree about slots configuration.
  22. >>> Check for open slots...
  23. >>> Check slots coverage...
  24. [OK] All 16384 slots covered.
  25. [root@localhost redis-cluster]#

可以看到7002节点变成了a5db243087d8bd423b9285fa8513eddee9bb59a6 7005的从节点。

redi集群测试的更多相关文章

  1. zookeeper部署及集群测试

    zookeeper部署及集群测试 环境 三台测试机 操作系统: centos7 ; hostname: c1 ; ip: 192.168.1.80 操作系统: centos7 ; hostname: ...

  2. Dubbo入门实例 本地伪集群测试Demo

    1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提 ...

  3. <正则吃饺子> :关于redis集群的搭建、集群测试、搭建中遇到的问题总结

    项目中使用了redis ,对于其基本的使用,相对简单些,根据项目中已经提供的工具就可以实现基本的功能,但是只是这样的话,对于redis还是太肤浅,甚至刚开始时候,集群.多节点.主从是什么,他们之间是什 ...

  4. Hadoop集群测试wordcount程序

    一.集群环境搭好了,我们来测试一下吧 1.在java下创建一个wordcount文件夹:mkdir wordcount 2.在此文件夹下创建两个文件,比如file1.txt和file2.txt 在fi ...

  5. ceph存储集群测试方案

    --测试目的 测试ceph集群的读写性能,根据测试数据了解整个ceph集群的性能情况. --测试环境 1.8节点ceph集群环境,1台虚拟机(cpu 8核,内存8G),8k的块大小,时长2小时 2.8 ...

  6. Spark集群测试

    1. Spark Shell测试 Spark Shell是一个特别适合快速开发Spark原型程序的工具,可以帮助我们熟悉Scala语言.即使你对Scala不熟悉,仍然可以使用这一工具.Spark Sh ...

  7. Kubernetes实战(二):k8s v1.11.1 prometheus traefik组件安装及集群测试

    1.traefik traefik:HTTP层路由,官网:http://traefik.cn/,文档:https://docs.traefik.io/user-guide/kubernetes/ 功能 ...

  8. Codis+redis 集群测试

    Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表), 上层应用可以像使用 ...

  9. 三十六.MHA集群概述 、 部署MHA集群 测试配置

    1.准备MHA集群环境 准备6台虚拟机,并按照本节规划配置好IP参数 在这些虚拟机之间实现SSH免密登录 在相应节点上安装好MHA相关的软件包   使用6台RHEL 7虚拟机,如图-1所示.准备集群环 ...

随机推荐

  1. 洛谷P1144 最短路计数

    题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数. 接下来M行 ...

  2. PCB (4)原理图导入PCB

    1导入原理图 打开原理图 之后出现对话框,检查错误,选择更新 2 自动对齐 2布线 手动布线 半自动布线 自动布线 输出

  3. 树莓派3b安装Apache2+PHP+MySQL+phpyadmin

    树莓派型号:3B+ 系统环境:2017-04-10-raspbian-jessie 先更新一下源 BASIC sudo apt-get update 安装Apache2 BASIC sudo apt- ...

  4. 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)

    从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...

  5. Qt5.9一个简单的多线程实例(类QThread)(第一种方法)

    Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...

  6. AI 线性回归

    线性回归(Linear Regression),顾名思义,输出是输入的线性函数.因为通常会附加偏置(bias)参数,所以实际是仿射函数. 参考链接: http://cs229.stanford.edu ...

  7. Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 以下常见算法的定义 1. 插入排序:插入排序基本操作就是将一 ...

  8. for循环两个略骚的写法

    骚写法 或许你知道,总之我觉得很酷,希望你也这么认为. 递增遍历 最常见场景,从 0 到 10 的遍历,不输出 10: for(let i = -1; ++i < 10;) { console. ...

  9. 【转载】固态硬盘的S.M.A.R.T详解

    文章来源于: 瑞耐斯存储技术 兵哥写这篇文章,是因为在测试的过程中看到了 SSD存在偶尔有性能下降的情况,经分析为S.M.A.R.T命令所导致,虽然这种情况看似不严重,但如果应用在诸如数据采集等关键性 ...

  10. 解决 webpack-dev-server 不能自动刷新的问题

    原文发表于我的技术博客 此文主要帮助大家解决 webpack-dev-server 启动后修改源文件浏览器不能自动刷新的问题. 原文发表于我的技术博客 1. webpack 不能热加载的问题 主要的问 ...