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