原文: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. CJOJ 【DP合集】最长上升序列2 — LIS2

    题面 已知一个 1 ∼ N 的排列的最长上升子序列长度为 K ,求合法的排列个数. 好题(除了我想不出来我应该找不到缺点), 想一想最长上升子序列的二分做法, 接在序列后面或者替换. 所以对于每一个位 ...

  2. Ethereum HD Wallet(虚拟货币钱包)-BIP32、BIP39、BIP44

    1.使用HD钱包的好处(链接:https://www.jianshu.com/p/53405db83c16) 备份更容易 传统钱包的问题是一个钱包可能存有一堆密钥地址,每个地址都有一些比特币.这样备份 ...

  3. sublime出现 unable download.......

    I managed to fix this by changing my package settings. I made my osx downloader preference curl, and ...

  4. JAVA框架 Spring 引入多个配置文件

    1.如果配置文件比较长,可以分多个配置文件.有两种方式: 1)在主配置文件加标签<import/> <import resource="jd/com/other/appli ...

  5. HDU 3440 House Man(编号排序+线性差分约束跑最短路)

    House Man Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. 使用Gitblit 在Windows2008 r2上部署Git Server(完整版)

    第一章 前言 使用gitblit搭建git server需要配置两个大件:java jdk.gitblit 本次搭建gitServer采用是当前最新版的两个版本,分别如下: jdk:Java SE D ...

  7. ISCSI target的两种安装方法

    1 tgt程序架构 tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便 ...

  8. redis系列--你真的入门了吗?redis4.0入门~

    前言 redis作为nosql家族中非常热门的一员,也是被大型互联网公司所青睐,无论你是开发.测试或者运维,学习掌握它总会为你的职业生涯增色添彩. 当然,你或多或少已经了解redis,但是你是否了解其 ...

  9. 关于KMP

    KMP算法,对于求b串在a串中出现的次数. 在学习KMP之前,希望大家充分掌握hash. HASH: 1.hash表:用来离散化(hash数组,hash链表) 2.Rabin-Kap算法: 可替代KM ...

  10. 牛客OI周赛4-提高组-C-战争[并查集]

    题意 一个长度为 \(n\) 的序列,每个权值互不相同,给出形如 \(l,r,p\) 的信息表示 \([l,r]\) 区间中最小的数是 \(p\) ,问第几个信息开始出现矛盾. \(n\leq 5 \ ...