Redis實現樂觀鎖+分布式事務


Redis實現樂觀鎖+分布式事務

項目做了負載后出現的問題優化

原始代碼:

 

問題做了負載后,不同的服務持有不同的lockNumQueue並發量高的時候出現多個線程搶同一個號源,生成大量的失敗訂單。

優化后的代碼:

 

通過spring data redis操作redis,將源代碼中的lockNumQueue 放入redis,對列表的主鍵加鎖,並對連接標記事務。事務提交后list不為空則成功,否則失敗。

注意:連接使用完成后,調用RedisConnectionUtils.unbindConnection(redisTemplate.getConnectionFactory());釋放連接,不釋放連接可能過段時間會報錯。

復現方式:使用線程池訪問方法,如果訪問的次數達到redis的最大連接數就會出現異常,JedisException: Could notget a resource from the pool


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM