應(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){ ????????????} ????????}
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦