【Redis】Redis學習(四) Redis Sentinel模式詳解

  

  主從模式的弊端就是不具有高可用性,當master掛掉之後,Redis將不能再對外提供寫入操做,所以sentinel應運而生。html

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

  1. 監控:能持續監控Redis的主從實例是否正常工做;
  2. 通知:當被監控的Redis實例出問題時,能經過API通知系統管理員或其餘程序;
  3. 自動故障恢復:若是主實例沒法正常工做,Sentinel將啓動故障恢復機制把一個從實例提高爲主實例,其餘的從實例將會被從新配置到新的主實例,且應用程序會獲得一個更換新地址的通知。
  4. 配置提供:由於sentinel保存着Redis主從的信息,因此Redis能夠從sentinel那得到全部的配置信息。

  Redis Sentinel是一個分佈式系統,能夠部署多個Sentinel實例來監控同一組Redis實例,固然只要有一個Sentinel實例就能夠完成上面的功能,固然一個sentinel實例也是不具有高可用性,因此通常也會搭建sentinel集羣。分佈式

1、Redis sentinel模式搭建

  https://redis.io/topics/sentinel講的很詳細了,照作便可,這還有中文版的,不過版本低了一點,依然能夠用,地址爲:http://doc.redisfans.com/topic/sentinel.html工具

2、Redis sentinel的Java客戶端鏈接

  sentinel就能夠知足通常生產的需求了,因此開發過程當中可使用:spa

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();

  這樣就能夠了。code

相關文章
相關標籤/搜索