這個(gè)秒殺架構(gòu)是有問題的
lpop不斷取,隊(duì)列隊(duì)列長度減少,然后請(qǐng)求過來又開始push,llen長度雖然不大于10,但是實(shí)際入隊(duì)的已經(jīng)大于10了。老師講的這種秒殺架構(gòu)有個(gè)前提,在隊(duì)列消費(fèi)開始時(shí),秒殺已經(jīng)結(jié)束,沒有新的請(qǐng)求過來,這個(gè)時(shí)候秒殺數(shù)量才是隊(duì)列長度。
lpop不斷取,隊(duì)列隊(duì)列長度減少,然后請(qǐng)求過來又開始push,llen長度雖然不大于10,但是實(shí)際入隊(duì)的已經(jīng)大于10了。老師講的這種秒殺架構(gòu)有個(gè)前提,在隊(duì)列消費(fèi)開始時(shí),秒殺已經(jīng)結(jié)束,沒有新的請(qǐng)求過來,這個(gè)時(shí)候秒殺數(shù)量才是隊(duì)列長度。
舉報(bào)
2021-12-30
把10個(gè)庫存寫10個(gè)元素存進(jìn)list,用戶訪問過來時(shí)取一個(gè),能取到元素值的這個(gè)用戶id再寫進(jìn)mysql,當(dāng)然也可以寫進(jìn)另一個(gè)list讓MySQL定時(shí)寫入
2021-12-12
你的分析是正確的,按照視頻中的代碼,再執(zhí)行一次請(qǐng)求又會(huì)又十條數(shù)據(jù),但顯然是不符合秒殺的,應(yīng)該是先把總數(shù)存到一個(gè)list中,插入一條就彈出一個(gè),當(dāng)變量list為空或者不存在時(shí)就算再有請(qǐng)求也不會(huì)超賣。
2020-05-27
還要提供一個(gè)計(jì)數(shù)器隊(duì)列總數(shù)是10,彈出一個(gè)就減去1
2019-10-25
實(shí)際操作的時(shí)候可以再redis中存儲(chǔ)一個(gè)秒殺庫存的緩存 然后先減redis的庫存再進(jìn)行入列? 再出列的時(shí)候進(jìn)行一個(gè)減少庫存的操作 或者再秒殺結(jié)束以后再進(jìn)行一個(gè)返還庫存的操作?