背景
redis集群的時候,有一個master節點掛機了。
springboot中調用redis的時候,會測試連接每一個node節點。
這時候就會報錯,連不上XX.XX.XX.XX:port(ip:port)。
原因
redis集群采用了默認的luttuce連接池技術。
(lettuce和jedis pool都是一種連接redis的池化方式,
springboot中構建RedisConnectionFactory bean的時候,
需要兩個configure 參數:pool相關和redis cluster相關)
lettuce連接redis集群的時候,默認不會改變redis集群的拓撲結構
redis配置的節點中,一個掛機了,但是集群拓撲結構沒有更新,
lettuce維持有問題的拓撲機構,所以報錯,所以需要更新rediscluster拓撲結構。
--及時更新拓撲結構
修復手段
擴展lettuce connection factory 相關的bean。
讓這個bean及時更新redis集群的拓撲結構,就是lettuce連接池不維持掛機的節點。
解決問題參考文檔
lettuce官文:
https://lettuce.io/core/release/reference/index.html#clientoptions.cluster-specific-options
網上同樣案例(如果你的redis集群設置了密碼,這個參考中就需要設置密碼):