redis間歇性斷連解決方式
使用lettuce 4.2.2.Fina版本作為redis的客戶端,出現(xiàn)間歇性斷連的情況,主要表現(xiàn)形式:
1、長時間連接不被使用,突然有請求過來后出現(xiàn)大面積的。
2、使用過程中也偶現(xiàn)RedisCommandTimeoutException。
嘗試解決辦法:
一、開啟lettuce連接檢查
開啟連接池的連接檢查功能,定義LettuceConnectionFactory的bean時增加設置對應的validateConnection屬性值為true,在每次使用鏈接前都增加一次ping的操作,如果ping不通代表當前連接已經(jīng)不可用,再重新初始化連接。但是開啟該功能會有較大的性能消耗,目前所做的性能壓測結果來看,平均耗時是不開啟檢查時的7倍以上,詳情見下圖,這樣的性能消耗確實無法接受。
二、客戶端主動增加心跳功能
客戶端新增定時任務,定時檢查連接狀態(tài),比如每1s中檢查一次,或者每2s檢查一次,程序啟動時便開始執(zhí)行心跳任務,具體方式:如圖:
存在的問題:
1、通過開啟連接池的連接檢查功能,能保證每一次拿到可用的連接,但是性能損耗過大;
2、通過增加心跳功能能夠解決長時間連接不使用被斷開的問題,但是仍然存在心跳間隙期間無法獲取到可用連接的情況,無法做到100%拿到可用連接。
到此這篇關于redis間歇性斷連解決方式的文章就介紹到這了,更多相關redis間歇性斷連內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
redis replication環(huán)形緩沖區(qū)算法詳解
這篇文章主要介紹了redis replication環(huán)形緩沖區(qū)算法的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04Redis如何使用Pipeline實現(xiàn)批處理操作
Redis?Pipeline?是一種優(yōu)化?Redis?操作的機制,通過將多個命令打包發(fā)送到?Redis?服務器,減少客戶端與服務器之間的網(wǎng)絡往返時間,本文主要來聊聊Redis如何使用Pipeline實現(xiàn)批處理操作,需要的可以了解下2025-02-02