鍍金池/ 問答/PHP/ 直播送禮接口應(yīng)該如何解決并發(fā)問題

直播送禮接口應(yīng)該如何解決并發(fā)問題

在直播APP中有給主播送禮物這樣一個場景,

大概的邏輯是:
1:判斷用戶禮物數(shù)量是否足夠
2:如果夠,則用戶禮物數(shù)量-1,增加主播的威望

遇到的問題:
在用戶刷禮物連擊,快速點擊送禮按鈕的時候,通常會遇到這種情況,在判斷禮物數(shù)量的時候,上一次送禮請求沒有完成,這時候,用戶禮物數(shù)量是夠的,然后過了這個判斷,上一次請求完成了,這時候仍要執(zhí)行扣除禮物數(shù)量的操作,這時候,禮物數(shù)量就變成了負(fù)數(shù)了。

請問,這種情況該如何防止禮物數(shù)量出現(xiàn)負(fù)數(shù)的情況。

回答
編輯回答
野橘

1.從前端講的話,希望你用promise,點了送禮后,讓按鈕灰掉等接口返回后再讓按鈕可用
2.從后端講你update的時候加個where number >0;他就不會成負(fù)數(shù)了,后面的update會失敗。

2017年4月4日 06:57
編輯回答
女流氓

如果我是你 , 我會考慮直接上redis , 有時候單線程的東西還是有很大好處的 .
其次 , 從你的應(yīng)用場景出發(fā) , 短時間多次點擊 , 簡直就是redis絕佳的用武之地 .
泥 , 還在考慮什么 ?

2017年9月10日 19:23
編輯回答
呆萌傻

這種情況后端應(yīng)該用消息隊列,或者加鎖策略,
前端可以在每次頁面打開時就把余量請求過來,避免展示負(fù)數(shù)

2017年1月27日 14:34
編輯回答
風(fēng)畔

隊列處理,并行轉(zhuǎn)為串行,這個時候判斷的禮物數(shù)量就是正確的

2018年3月4日 19:27