redis 打算使用這款緩存系統
Jedis 是官方推薦的一款封裝組建。
以下是遇到的幾個問題
1、使用都非常簡單,但是經過我封裝之后,使用默認設置。從服務器端看連接數60多個,前段就已經報超時了。所以,有必要對配置文件做一番研究。
經過檢查原來是寫單例的時候,沒給值給值,導致沒一個鏈接就是一個新的請求。改完后,問題解決。
但是當多線程的時候,會出現問題2的現象。
2、新的問題出現,經過多次刷新對緩存的調用的時候。會拋出錯誤。
redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: o
經谷歌查出,我對JEDIS 使用了單例,他並不是線程安全的。官方建議使用線程池來解決這個問題。
發現用了連接池以后,好像還是默認配置的8個就,線程就開始進入等待狀態,不行。
經谷歌,百度翻閱問題幾天,調整了線程最大值,什么的。歸還線程等等,依然未果。
我試了兩種方案,一種是使用線程池的,但是從服務器端窗口看到到60個線程客戶端就開始拿不到可用鏈接,很郁悶。
另一種是單例的不使用線程池的,這種可以解決訪問線程卡死的問題,響應很快,但是使用多線程並發測試的時候,JEDIS客戶端不是線程安全的,會出現
線程間共享資源問題(我使用的是單例模式),於是嘗試了加鎖,但是這樣極大的降低了響應速度,一個頁面連續刷幾次就會拋出 READ TIME OUT錯誤。
最后沒辦法,啟用第一種,繼續嘗試各種方法,考慮服務端版本問題,去了官網查閱。下了一個最新的64位的版本,線程問題迎刃而解