java客戶端操做redis sentinel

redis sentinel客戶端實現原理

在介紹 java api以前咱們先看看redis sentinel客戶端實現的一個原理(4個步驟)java

1.首先要獲取全部sentinel節點的集合,獲取一個可用節點,同時須要一個對應的masterNameredis

2.經過sentinel的一個api:get-master-addr-by-name-masterName(經過名字獲取地址),sentinel會返回master的真正地址和端口api

3.當客戶端獲取到master信息後,會經過role replication來進行一個驗證是不是真正的master節點spa

4.最後一步就是當sentinel感知到master的變化會通知客戶端更換節點,其實內部是用的一個發佈訂閱模式(客戶端訂閱sentinel的某一個頻道,當master發生變化,sentinel向這個頻道publish一條消息,客戶端就能夠獲取再對新的master進行一個鏈接)代理

客戶端接入流程

1.須要一個sentinel地址的集合code

2.須要masterNameget

3.不是代理模式(不是每次都須要去鏈接sentinel節點去獲取master信息,這樣效率不好,而是採用通知的形式)io

使用Jedis訪問sentinel

//初始化Sentinel鏈接池,注意:這裏名字是JedisSentinelPool只是爲了區分它是sentinel方式鏈接,其內部仍是鏈接master
JedisSentinelPool sentinelPool = new JedisSentinelPool(masterName,SentinelSet,poolConfig,timeout);

Jedis jedis = null;
try{
  jedis = sentinelPool.getResource();
  //這裏執行jedis command
}catch(Exception e){
  logger.error(e.getMessage(),e);
}finally{
  if(jedis != null)
     //歸還鏈接
     jedis.close();
}
相關文章
相關標籤/搜索