redis斷線重連

redis斷線重連

應(yīng)用在redis重啟、網(wǎng)絡(luò)閃斷并恢復(fù)正常后,應(yīng)用必須能夠自恢復(fù),下面以Java語言的jedis客戶端為例說明:

1、作為發(fā)布者

Jedis對象不能作為單例,網(wǎng)絡(luò)閃斷后該Jedis對象無法自恢復(fù)。應(yīng)該每次發(fā)布消息時,從JedisPool中取Jedis對象,再調(diào)用set方法。

2、作為訂閱者

當(dāng)網(wǎng)絡(luò)閃斷后psubscribe()方法不再阻塞并拋出異常,所以可以使用while循環(huán),在循環(huán)內(nèi)部處理異常,代碼如下:

while(true){  ????????????Jedis?redis?=?this.jedisPool.getResource();  ????????????try{  ????????????????redis.psubscribe(this,?channelArray);  ????????????}catch(JedisConnectionException?e){  ????????????????logger.warn("Exception?:",?e);  ????????????????logger.warn("Exit?redis?psubscribe,?retry?after?1?second");  ????????????}catch(Exception?e){  ????????????????logger.error("Exception:",?e);  ????????????}  ????????????try{  ????????????????Thread.sleep(1000);  ????????????}catch(Exception?unused){  ????????????}  ????????????try{  ????????????????if(redis?!=?null){  ????????????????????redis.close();  ????????????????}  ????????????}catch(Exception?unused){  ????????????}  ????????}

更多redis知識請關(guān)注redis入門教程欄目。

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享