課程
/后端開發
/PHP
/PHP秒殺設計
老師,既然redis是單線程,那為什么非要配合lua呢,直接在代碼里執行redis->eval或者redis->incrby不就能控制超賣么,
2019-10-01
源自:PHP秒殺設計 4-4
正在回答
同學你好,你的思路不錯,可以繼續去想下直接incrby改會有什么問題,老師提供的思路只是其中一個方案,真正場景實現肯定會有非常多的方案,需要大家自己思考。redis->eval本身就是執行lua腳本,redis->incrby理論上也可以防止邊界條件的發生,不會造成超賣,因為incrby就實現了查詢+修改的原子操作,但是有一點點小缺點就是,不能做到只要一超賣了就直接終止+1。
MKfans菜鳥
皮奇 回復 MKfans菜鳥
慕勒4092611 回復 皮奇
慕粉3988021 回復 慕勒4092611
舉報
利用php+redis打造一個高性能的訂單秒殺系統
1 回答redis中lua api
3 回答為什么統一減庫存能防止少賣的現象啊
1 回答假如在搶購過程中 redis 掛了怎么辦呢
2 回答為什么這里要用lua而不用php操作redis?
1 回答問題哈,真有公司在生產環境使用 apcu 么?本地內存,來做庫存的限制么?請賜教
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-10-02
同學你好,你的思路不錯,可以繼續去想下直接incrby改會有什么問題,老師提供的思路只是其中一個方案,真正場景實現肯定會有非常多的方案,需要大家自己思考。
redis->eval本身就是執行lua腳本,redis->incrby理論上也可以防止邊界條件的發生,不會造成超賣,因為incrby就實現了查詢+修改的原子操作,但是有一點點小缺點就是,不能做到只要一超賣了就直接終止+1。