最新回答 / ai0by
課程里面只是個(gè)演示吧,超賣設(shè)置庫存鎖或者,鎖秒殺之類的就能控制了老師課程里面的只是限制了存儲(chǔ)長度,具體怎么用看業(yè)務(wù)場景吧
2019-09-23
最贊回答 / 尋找09之夏
視頻中采用for循環(huán)測試,這個(gè)是有序的,所以不會(huì)出現(xiàn)超賣現(xiàn)象;如果并發(fā)測試的話,會(huì)出現(xiàn)超賣現(xiàn)象;這里提供一個(gè)解決思路:活動(dòng)前定義一個(gè)長度為10的list;利用lpop的原子性可以保障不會(huì)超賣;就是每次請(qǐng)求先lpop,如果可以獲取到值,表示秒殺成功;獲取不到說明已搶完。
2019-09-21
最新回答 / IT行業(yè)小菜鳥
采用異步的原因是根據(jù)實(shí)際的業(yè)務(wù)邏輯,用戶只關(guān)心是否搶購成功的結(jié)果,并不需要詳細(xì)數(shù)據(jù),所以只返回給用戶成功或失敗的提示,實(shí)際隊(duì)列中的搶購數(shù)據(jù)一般是通過定時(shí)任務(wù)由消費(fèi)者進(jìn)行消費(fèi),定時(shí)任務(wù)可以是系統(tǒng)級(jí)別的crontab,也可以是php的定時(shí)器等
2019-09-01
最新回答 / 尋找09之夏
視頻中采用for循環(huán)測試,這個(gè)是有序的,所以不會(huì)出現(xiàn)超賣現(xiàn)象;如果并發(fā)測試的話,會(huì)出現(xiàn)超賣現(xiàn)象;這里提供一個(gè)解決思路:活動(dòng)前定義一個(gè)長度為10的list;利用lpop的原子性可以保障不會(huì)超賣;就是每次請(qǐng)求先lpop,如果可以獲取到值,表示秒殺成功;獲取不到說明已搶完。
2019-08-06
最新回答 / 侏儒冰法
以課程案例為例,前10個(gè)秒殺成功,這個(gè)結(jié)果是實(shí)時(shí)的,可以直接返給前端。實(shí)際項(xiàng)目時(shí),也是在得到秒殺成功的標(biāo)識(shí)之后,才進(jìn)行后續(xù)的付款操作。
2019-06-25
最贊回答 / 慕粉0112974
確實(shí)會(huì)有這樣的問題發(fā)生,解決方案有兩個(gè):1、提前將秒殺數(shù)據(jù)寫入到隊(duì)列中,比如你寫10個(gè)隨機(jī)數(shù)(token)進(jìn)入隊(duì)列,然后有請(qǐng)求過來的時(shí)候,你開始pop這個(gè)token,并判斷得到的值是否為空,如果為空說明10個(gè)token已經(jīng)被取完了,秒殺結(jié)束。因?yàn)閜op是redis的原始操作,不用擔(dān)心重復(fù)返回相同值的問題。2、在你的消費(fèi)進(jìn)程中設(shè)置為單線程處理,只處理10個(gè)記錄。
2019-05-29
最新回答 / 家居小楠人
可以同時(shí)進(jìn)行? 秒殺結(jié)束 redis 寫個(gè)標(biāo)識(shí)? ? 每次秒殺請(qǐng)求 邏輯參與判斷這個(gè)標(biāo)識(shí)???
2018-11-19