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