原文: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的从节点。

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

  1. <正则吃饺子> :关于redis集群的测试demo

    redis集群的测试demo,来自网络,具体不详. 1.下载地址,如下:http://download.csdn.net/detail/u012543819/9729291 2.项目是java项目,结 ...

  2. Redis 集群缓存测试要点--关于 线上 token 失效 BUG 的总结

    在测试账户系统过程中遇到了线上大面积用户登录态失效的严重问题,事后对于其原因及测试盲点做了一些总结记录以便以后查阅,总结分为以下7点,其中原理性的解释有些摘自网络. 1.账户系统token失效问题复盘 ...

  3. Docker镜像配置redis集群

    redis版本:3.2.3 架构: 3节点redis集群,并为每个节点设置一个备用节点,共6个节点 1.安装redis镜像 docker load < docker.redis.tar.gz 2 ...

  4. redis集群与分片(2)-Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  5. 带你自行搭建虚拟机和Redis集群环境,值得收藏!

    前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ...

  6. Redis集群的使用测试(Jedis客户端的使用)

    Redis集群的使用测试(Jedis客户端的使用)1.Jedis客户端建议升级到最新版(当前为2.7.3),这样对3.0.x集群有比较好的支持.https://github.com/xetorthio ...

  7. Redis集群以及自动故障转移测试

    在Redis中,与Sentinel(哨兵)实现的高可用相比,集群(cluster)更多的是强调数据的分片或者是节点的伸缩性,如果在集群的主节点上加入对应的从节点,集群还可以自动故障转移,因此相比Sen ...

  8. Redis集群的安装测试(伪分布模式 - 主从复制)

    想跑一下Redis集群,但是没有那么多服务器,所以使用伪分布式模式,模拟一下,记录一下安装过程. 软件: redis-3.0.3.tar.gz 集群正常工作至少需要3个主节点(本示例创建6个节点,3主 ...

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

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

随机推荐

  1. PAT B1013 数素数 (20 分)

    令 P​i​​ 表示第 i 个素数.现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输 ...

  2. 编程使用缓冲流读取试题文件,test6_5.txt 内容如下所示。 每次显示试题文件中的一道题目,读取到字符“*”时暂停读取, 等待用户从键盘输入答案。用户做完全部题目后,程序给出用户的得分。

    test6_5.txt内容如下: (1)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( ). A.封装象 B.继承 C.抽象 D.多态 ******************** ...

  3. Bat 参数去引号(各种去引号的奇葩方式,三种变量互转),普通变量不能直接去掉外层引号

    很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& .| .&&.||,命令行参数界定符Space .tab . ; . ...

  4. OutputFormat输出过程的学习

    花了大约1周的时间,最终把MapReduce的5大阶段的源代码学习结束掉了.收获不少.就算本人对Hadoop学习的一个里程碑式的纪念吧.今天花了一点点的时间,把MapReduce的最后一个阶段.输出O ...

  5. MB_SELECT_GR_BLOCKED_STOCK 读取物料收货冻结库存

    MMBE 查询物料的当前库存,有一列是收货冻结库存(GR Blocked Stock),但是没有明细. 通过函数 MB_SELECT_GR_BLOCKED_STOCK 可以查询物料收货冻结库存的明细. ...

  6. Android开发——为EditText添加烟花效果的实现

    )什么时候发射烟花:监听EditText的文字改变,获取文字数量的变化以确定风的方向,还有获取光标的位置确定爆炸的位置.光标的位置没有具体的方法确定坐标,要通过反射自己计算. 2.  主要实现类 库里 ...

  7. 五、MYSQL的索引

    对于建立的索引(姓,名字,data) 5.1.索引对一下的查询类型有效 1.全值匹配:能查找姓+名为ALLEN.出生日期为1990-11-05的人: 2.最左前缀匹配:可以查找姓为ALLEN的人:即只 ...

  8. 探索sklearn | K均值聚类

    1 K均值聚类 K均值聚类是一种非监督机器学习算法,只需要输入样本的特征 ,而无需标记. K均值聚类首先需要随机初始化K个聚类中心,然后遍历每一个样本,将样本归类到最近的一个聚类中,一个聚类中样本特征 ...

  9. Scala学习(一)练习

    Scala基础学习&l练习 1. 在Scala REPL中键人3.,然后按Tab键.有哪些方法可以被应用 在Scala REPL中需要按3. 然后按Tab才会提示. 直接按3加Tab是没有提示 ...

  10. java 调用 linux 命令行 +使用管道、awk等命令进行数据处理的方法

    这里用 sh -c "命令" 的方式是因为java里只能这么用,管道这边java处理不了,所以只能一次执行一条命令,但是在linux里用 sh -c 的方式返回的awk处理过的结果 ...