導航:首頁 > 編程語言 > redisjava類

redisjava類

發布時間:2025-01-12 12:49:25

java連接redis超時問題怎麼解決

應該是redis本身的服務有問題了
本文所針對的連接超時問題所涉及的相關元素如下:
Redis客戶端: Jedis (java)
Redis版本 :2.8.12
Redis部署操作系統類型:Linux

正文開始:

No 1.Redis執行大命令(時間復雜度為O(N)的命令)
問題剖析:
a.Redis伺服器端通過單線程處理命令,一旦有大命令被執行,Redis將無法及時響應來自客戶端的任何命令
關於Redis大命令的監控,可以查看slowlog來觀察
b.在使用jedis作為redis客戶端時,當redis連接池的配置參數testOnBorrow=true時,默認會在獲取redis連接
時,先執行redis的ping方法,而基於原因a,此時redis將無法及時響應,自然會報出time out異常
如何解決:
a.盡量避免使用時間復雜度為O(N)的命令
b.如果無法避免使用時間復雜度為O(N)的命令,則應降低其使用頻率,避免在業務高峰期時使用

No 2.Redis單次操作數據包過大
問題分析
a.單次操作數據包過大,且操作頻繁,極有可能會導致網路擁堵
b.在使用jedis作為redis客戶端時,當redis連接池的配置參數testOnBorrow=true時,默認會在獲取redis連接
時,先執行redis的ping方法,而基於原因a,此時redis將無法及時響應,自然會報出time out異常
如何解決:
a.排查代碼,確定是否存在大數據(數據條目過多/單條數據過大)操作,將其進行改造,改造方案有兩個:
a1.數據拆分,變更數據類型(常見的情況是將java中的collection類型序列化後存入redis的String數據
類型中),如將String數據類型調整為hash/list/set等,這常用於解決單條數據量過大的情況
a2.調整業務邏輯,減少單次數據查詢范圍(常見的情況如將redis中的整個hash數據取回,在應用程序內存中獲取需要的entry),如使用hget等單條查詢命令替換hgetall命令

閱讀全文

與redisjava類相關的資料

熱點內容
androidio流 瀏覽:797
伺服器怎麼改nvr 瀏覽:937
真空壓縮袋怎樣打開 瀏覽:80
證券市場基礎知識pdf2012 瀏覽:720
mastercam自動編程視頻 瀏覽:9
如何得知加密類型 瀏覽:40
單片機匯編讓主程序循環執行 瀏覽:371
電訊APP是干什麼的 瀏覽:532
程序員互相之間不能透露薪水 瀏覽:972
美團伺服器是什麼意思 瀏覽:416
周末程序員吃什麼 瀏覽:996
解壓的pdf格式怎麼轉換 瀏覽:228
ad輸出pdf 瀏覽:306
dhcp伺服器如何部署 瀏覽:508
如何追女生app 瀏覽:432
阿里雲域名綁定香港伺服器 瀏覽:551
java文本文件壓縮 瀏覽:531
心靈解壓大笑視頻 瀏覽:600
東學西學單片機 瀏覽:671
phpstudy做伺服器如何使用 瀏覽:952