91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis如何解決高并發問題

發布時間:2021-07-28 11:18:59 來源:億速云 閱讀:198 作者:小新 欄目:數據庫

這篇文章主要介紹Redis如何解決高并發問題,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

redis為什么會有高并發問題

redis的出身決定

 redis是一種單線程機制的nosql數據庫,基于key-value,數據可持久化落盤。由于單線程所以redis本身并沒有鎖的概念,多個客戶端連接并不存在競爭關系,但是利用jedis等客戶端對redis進行并發訪問時會出現問題。發生連接超時、數據轉換錯誤、阻塞、客戶端關閉連接等問題,這些問題均是由于客戶端連接混亂造成。

同時,單線程的天性決定,高并發對同一個鍵的操作會排隊處理,如果并發量很大,可能造成后來的請求超時。
在遠程訪問redis的時候,因為網絡等原因造成高并發訪問延遲返回的問題。

解決辦法

1.在客戶端將連接進行池化,同時對客戶端讀寫Redis操作采用內部鎖synchronized。

2.服務器角度,利用setnx變向實現鎖機制。這個方法在實際環境中如何使用,本人并不清楚。

jedis常見錯誤分析

異常代碼1:

復制代碼 代碼如下:

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

問題分析:redis.clients.util.Pool.getResource會從JedisPool池中返回一個可用的redis連接,關于JedisPool中可用連接的配置有幾個重要的參數如下:

1.MaxActive:可用連接實例的最大數目,為負數的時候沒有限制。

2.MaxIdle:空閑連接實例的最大數目,為負值時沒有限制。

3.MaxWait:等待獲取鏈接的超時時間。

也就是說當連接池中沒有active/idle的連接時,會等待maxWait時間,如果等待超時還沒有可用連接,則拋出Could not get a resource from the pool異常。所以為避免這樣的錯誤,
我們應該根據程序實際情況合理設置這三個參數的值,同時在我們獲取一個連接的程序方法中也應該合理的處理這個異常,當沒有連接可用時,等待一段時間再獲取也許是個比較好的選擇。

異常代碼2:

復制代碼 代碼如下:

redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out

遇到這個異常,可能會比較疑惑,redis是對內存的操作,速度一個在毫秒級別,在對redis操作出現秒級別的操作時會讓人感覺疑惑,但是本文開頭已經說過了,在一些特殊情況下,redis出現超時并不奇怪。jedis在初始化JedisPool時應該根據實際情況通過redis.clients.jedis.JedisPoolConfig合理設置連接池參數,通過redisPool構造方法,設置socket讀取輸入InputStream的超時時間。

`pool = new JedisPool(config, host, port, 100000)`;

第四個參數是time out,單位是毫秒。可以通過合理的設置這個值來規避問題。但是這不能完全解決超時的為題。有些高并發情況下,延時返回時間甚至會達到幾十秒的極端情況。這個問題要通過代碼層面解決redis單線程本身不支持鎖,在對同一個鍵進行并發操作會產生競爭的問題。

以上是“Redis如何解決高并發問題”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辛集市| 金塔县| 恭城| 韩城市| 盈江县| 承德市| 山东省| 泌阳县| 乌海市| 鄢陵县| 沛县| 宁南县| 德惠市| 铁岭市| 揭阳市| 彭阳县| 卫辉市| 麻城市| 基隆市| 安庆市| 谢通门县| 成安县| 包头市| 梁山县| 武鸣县| 武宣县| 东源县| 沂源县| 沭阳县| 红桥区| 日土县| 石城县| 东海县| 咸阳市| 吉隆县| 石狮市| 温宿县| 宁化县| 祥云县| 阿鲁科尔沁旗| 聊城市|