Fork me on GitHub

【Redis】Redis学习(四) Redis Sentinel模式详解

  

  主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生。

  Redis Sentinel是Redis官方提供的集群管理工具,主要有三大功能:

  1. 监控:能持续监控Redis的主从实例是否正常工作;
  2. 通知:当被监控的Redis实例出问题时,能通过API通知系统管理员或其他程序;
  3. 自动故障恢复:如果主实例无法正常工作,Sentinel将启动故障恢复机制把一个从实例提升为主实例,其他的从实例将会被重新配置到新的主实例,且应用程序会得到一个更换新地址的通知。
  4. 配置提供:因为sentinel保存着Redis主从的信息,所以Redis可以从sentinel那获得所有的配置信息。

  Redis Sentinel是一个分布式系统,可以部署多个Sentinel实例来监控同一组Redis实例,当然只要有一个Sentinel实例就可以完成上面的功能,当然一个sentinel实例也是不具备高可用性,所以一般也会搭建sentinel集群。

一、Redis sentinel模式搭建

  https://redis.io/topics/sentinel讲的很详细了,照做即可,这还有中文版的,不过版本低了一点,依然可以用,地址为:http://doc.redisfans.com/topic/sentinel.html

二、Redis sentinel的Java客户端连接

  sentinel就可以满足一般生产的需求了,所以开发过程中可以使用:

Set<String> sentinels = new HashSet<>(
    Arrays.asList("ip:port", "ip:port", "ip:port"));
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
//此处对poolConfig进行设置
JedisSentinelPool pool = new JedisSentinelPool("yiwangzhibujian", sentinels, poolConfig);
Jedis jedis = pool.getResource();
//使用jedis进行操作
//使用完直接close即可,会自动判断,若单个连接则关闭,在连接池内则归还
jedis.close();

  这样就可以了。

posted @ 2017-06-22 21:57  已往之不谏  阅读(8520)  评论(0编辑  收藏  举报