課程
/后端開發(fā)
/PHP
/PHP消息隊列實現(xiàn)及應(yīng)用
請問哪里有用到鎖 ? 看了代碼 ?沒找到
2018-03-31
源自:PHP消息隊列實現(xiàn)及應(yīng)用 2-2
正在回答
status 0 未處理 1 已處理 2 處理中
應(yīng)該是查詢status=0的數(shù)據(jù),然后將數(shù)據(jù)狀態(tài)改為2,如果執(zhí)行成功就改為1,反之改為0,這樣每次查詢status=0的數(shù)據(jù)就不會有重復(fù)的。
視頻中說的鎖沒有任何意義。
這里的鎖應(yīng)該是配合其他地方使用的, 其他地方查詢的時候不對 status 為 2 (處理中的)的進行修改處理
正確做法應(yīng)該是先 查找 2條數(shù)據(jù)出來, 然后更新為 2 (處理中),? 下一步對這倆條數(shù)據(jù)進行處理
這個鎖完全是自己yy的一個鎖, 完全沒有起到作用;
?試想一下:
?第一次執(zhí)行
?????修改2條記錄為? 狀態(tài)更新為2 。?
????然后搜索狀態(tài)為 2 的數(shù)據(jù)? (2條);
????處理數(shù)據(jù) (此時處理流程在復(fù)雜狀態(tài)下1分鐘內(nèi)只處理了1條);
1分鐘后, 第二次執(zhí)行? ? ?
????修改2條記錄為??狀態(tài)更新為2 。?
????然后搜索狀態(tài)為 2 的數(shù)據(jù)? (3條,2條是本次更新的記錄,還有1條是上次沒有處理完成的);
????處理數(shù)據(jù) (此時是不是有一條數(shù)據(jù)重復(fù)處理了???);
訂單狀態(tài)先設(shè)置為“處理中”(鎖定),然后進行處理,處理完成后再設(shè)置為“已處理”(解除鎖定)。
舉報
消息隊列是個什么玩意兒,使用隊列解決秒殺等實際問題概念和使用方法
2 回答處理訂單的時候,如果1分鐘沒處理完當(dāng)前的兩個訂單
1 回答訂單時異步處理的,前端怎么樣立即得到秒殺結(jié)果呢
4 回答為什么需要定時去執(zhí)行??這樣做的好處是什么?訂單不是可以在點擊按鈕觸發(fā)修改狀態(tài)就可以實現(xiàn)?
2 回答像go語言或者swoole這種,他們有異步處理能力,是不是可以不用隊列?
3 回答redis LPOP 取出list里面的數(shù)據(jù),再用LLEN 來取值,數(shù)據(jù)長度就變了,意味著又可以參加秒殺了么
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2021-12-12
status 0 未處理 1 已處理 2 處理中
應(yīng)該是查詢status=0的數(shù)據(jù),然后將數(shù)據(jù)狀態(tài)改為2,如果執(zhí)行成功就改為1,反之改為0,這樣每次查詢status=0的數(shù)據(jù)就不會有重復(fù)的。
視頻中說的鎖沒有任何意義。
2018-07-29
這里的鎖應(yīng)該是配合其他地方使用的, 其他地方查詢的時候不對 status 為 2 (處理中的)的進行修改處理
2018-07-29
正確做法應(yīng)該是先 查找 2條數(shù)據(jù)出來, 然后更新為 2 (處理中),? 下一步對這倆條數(shù)據(jù)進行處理
2018-07-29
這個鎖完全是自己yy的一個鎖, 完全沒有起到作用;
?試想一下:
?第一次執(zhí)行
?????修改2條記錄為? 狀態(tài)更新為2 。?
????然后搜索狀態(tài)為 2 的數(shù)據(jù)? (2條);
????處理數(shù)據(jù) (此時處理流程在復(fù)雜狀態(tài)下1分鐘內(nèi)只處理了1條);
1分鐘后, 第二次執(zhí)行? ? ?
????修改2條記錄為??狀態(tài)更新為2 。?
????然后搜索狀態(tài)為 2 的數(shù)據(jù)? (3條,2條是本次更新的記錄,還有1條是上次沒有處理完成的);
????處理數(shù)據(jù) (此時是不是有一條數(shù)據(jù)重復(fù)處理了???);
2018-04-08
訂單狀態(tài)先設(shè)置為“處理中”(鎖定),然后進行處理,處理完成后再設(shè)置為“已處理”(解除鎖定)。