springboot利用redis、Redisson處理并發(fā)問題的操作
在工作中,遇到的接口基本都是長(zhǎng)這樣的:
如下為一個(gè)庫(kù)存扣減的接口。從redis中獲取庫(kù)存數(shù)量,然后扣減一個(gè)數(shù)量
問題這個(gè)接口在并發(fā)的情況下是有問題,可以用jmeter測(cè)試一下(用postman壓力測(cè)試了一下,沒有測(cè)出并發(fā)問題。網(wǎng)上有的博客說postman沒法測(cè)試并發(fā))
jmeter設(shè)置:100個(gè)并發(fā)
打印結(jié)果:
問題很嚴(yán)重呀
解決方案,優(yōu)化如下:jmeter設(shè)置:101個(gè)并發(fā),stock=100,則正確結(jié)果是應(yīng)該會(huì)出現(xiàn)一次“扣減失敗,庫(kù)存不足”
打印如下,沒毛病
c:windowssystem32driversetc
jmeter測(cè)試:
兩個(gè)應(yīng)用的后臺(tái)打印:從日志來看,synchronized沒有起到作用。畢竟synchronized是JVM級(jí)別的,沒法對(duì)集群的情況進(jìn)行加鎖
解決方案:引入今天的大佬,分布式鎖:Redisson
代碼優(yōu)化如下:
jmeter測(cè)試:101個(gè)線程,庫(kù)存數(shù)量100
后臺(tái)打印:
出現(xiàn)了一次扣減失敗的情況,運(yùn)行正常
注意點(diǎn):注意引入redisson比較新的版本,避免出現(xiàn)一些遠(yuǎn)程連接斷絕的一些問題
源碼地址:https://github.com/windyNaruto9833/redis
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享2. jsp實(shí)現(xiàn)登錄驗(yàn)證的過濾器3. Xml簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理4. jsp文件下載功能實(shí)現(xiàn)代碼5. 如何在jsp界面中插入圖片6. JSP之表單提交get和post的區(qū)別詳解及實(shí)例7. 詳解瀏覽器的緩存機(jī)制8. vue3+ts+elementPLus實(shí)現(xiàn)v-preview指令9. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程10. phpstudy apache開啟ssi使用詳解
