Redis斷線重連編碼注意事項


應用在Redis重啟、網絡閃斷並恢復正常后,應用必須能夠自恢復,下面以Java語言的jedis客戶端為例說明:

1、作為發布者

 

Jedis對象不能作為單例,網絡閃斷后該Jedis對象無法自恢復。應該每次發布消息時,從JedisPool中取Jedis對象,再調用set方法。

2、作為訂閱者

     當網絡閃斷后psubscribe()方法不再阻塞並拋出異常,所以可以使用while循環,在循環內部處理異常,代碼如下:

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){

            }

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM