上文介绍了Redis Sharding集群的使用,点击阅读

本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点

​一、步骤如下:
1、配置三组主从结构的redis集群,参考

2、设置哨兵(某个master节点):哨兵的作用主要是监控master节点的状态,当master节点挂掉时通过选举机制选出一个slave节点成为一个新的master,哨兵的使用可参考
   sentinel.conf配置说明,下面的mymaster很重要,表示是master节点的名称,jedis指定master使用该名称,而不是IP+端口
   sentinel monitor mymaster 127.0.0.1 6379 1

3、使用ShardedJedisSentinelPool连接池
   a) 该类是一个开源项目,地址为:https://github.com/warmbreeze/sharded-jedis-sentinel-pool
   b) ShardedJedisSentinelPool通过MasterListener线程(有几个哨兵就有几个线程)监控哨兵的状态,如果对应的master节点发生问题,如主从切换,则通过redis的pub/sub该监听器线程
   c) MasterListener的run方法调用initPool重置连接池,即连接新的master机器
   d) 调用pool.getResource()发生主从切换,当次redis操作使用新的master机器
   e) 调用pool.getResource()发生主从切换,当次redis操作无效并抛出SocketException,下次redis恢复正常

二、示例代码:由于机器有限,只配置了一台机器,多台原理一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class ShardedSentinelTest {
 
    public static void main(String[] args) {
        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
 
        List<String> masters = new ArrayList<String>();
        masters.add("mymaster");
 
 
        Set<String> sentinels = new HashSet<String>();
        sentinels.add("xxxxxx:29111");
 
 
        ShardedJedisSentinelPool pool = new ShardedJedisSentinelPool(masters, sentinels, config, 60000);
        ShardedJedis jedis = pool.getResource();
 
        for (int i = 1; i < 10000; i++) {
            String val = jedis.set("ss" + i, "vv" + i);
            System.out.println(jedis.get("ss" + i));
        }
        jedis.close();
        pool.destroy();
    }
}

三、参考文档
  1. http://www.tuicool.com/articles/naeEJbv  基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
  2. http://blog.csdn.net/dc_726/article/details/48084373 Jedis分片Sentinel连接池实验

Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接的更多相关文章

  1. Redis集群(八):Redis Sharding集群

    一.Redis目前的集群方案主要有两种:Redis Sharding和Redis Cluster 1.Redis Sharding:3.0以前基本上使用分片实现集群,目前主流方案,客户端实现 2.Re ...

  2. Redis——(主从复制、哨兵模式、集群)的部署及搭建

    Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...

  3. Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...

  4. [转]Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...

  5. Redis搭建(四):Sharding集群模式

    一. 方案 1. 介绍redis集群分为服务端集群(Cluster)和客户端分片(Sharding)服务端集群:redis3.0以上版本实现,使用哈希槽,计算key的CRC16结果再模16834.此处 ...

  6. 【Redis学习之九】Redis集群:Twemproxy和HA

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-3.0.4 主从模式对写压力没有分担,解决思路就 ...

  7. Redis 集群方案- 主从切换测试

    大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放.印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会 ...

  8. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

随机推荐

  1. 超越 JSON: Spearal 序列化协议简介

      Spearal 是一个新的开源的序列化协议,这个协议旨在初步替换JSON 将HTML和移动应用连接到Java的后端. Spearal的主要目的是提供一个序列协议,这个协议即使是在端点间传输的复杂的 ...

  2. 珍珠(bead)

    题目描述 有n颗形状和大小都一致的珍珠,它们的重量都不相同.n为整数,所有的珍珠从1到n编号.你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位.下面给出 ...

  3. 解析ListView联动的实现--仿饿了么点餐界面

    一.博客的由来 大神王丰蛋哥 之前一篇博客仿饿了点餐界面2个ListView联动(http://www.cnblogs.com/wangfengdange/p/5886064.html) 主要实现了2 ...

  4. smarty模块引擎

  5. nodejs微信公众号快速开发|自定义关键字回复

    一点说明: nodejs 微信api 扩展,集成大部分功能. 案例 https://github.com/leiroc/node-wxeasy-example 上传example中文件到服务器 ,然后 ...

  6. 实现一个基于 SharePoint 2013 的 Timecard 应用(上)

    在 SharePoint 2013 上面实现一个 Timecard 应用的想法来自一个真实的需求,而实现的方案在我脑海里面盘旋已经很久了,终于这几天准备安排点儿时间将它实现出来. “ We start ...

  7. Android Weekly Notes Issue #233

    Android Weekly Issue #233 November 27th, 2016 Android Weekly Issue #233 本期内容包括: 用Mockito做RxJava的单元测试 ...

  8. 基于SVN的项目管理——集中与分散

    我们在此处不讨论 GIT 比 SVN 好多少,也不讨论 Maven 和 Gradle 哪个好用,基于现有的开发环境,大多数公司还是采用 SVN + Maven 来进行项目管理——因为这已经满足了大多数 ...

  9. 安装KVM及虚拟机

      创建lvm       安装kvm相关的包     需要安装的包                                                                 安 ...

  10. C/S打包 客户端/windows程序 Inno Setup

    之前介绍过InstallShield打包工具,本文再介绍更加方便的打包工具Inno Setup Inno Setup相对来说,比InstallShield更容易使用,不需要去等VS去创建项目,只要提供 ...