`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '訂單創建的時間',
`updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '處理完成的時間',
`status` tinyint(2) NOT NULL COMMENT '當前狀態,0未處理,1已處理,2處理中',
PRIMARY key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
`updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '處理完成的時間',
`status` tinyint(2) NOT NULL COMMENT '當前狀態,0未處理,1已處理,2處理中',
PRIMARY key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2017-07-24
拿走不謝
create table `order_queue`(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id號',
`order_id` int(11) NOT NULL,
`mobile` varchar(20) NOT NULL COMMENT '用戶手機號',
create table `order_queue`(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id號',
`order_id` int(11) NOT NULL,
`mobile` varchar(20) NOT NULL COMMENT '用戶手機號',
2017-07-24
視頻里的代碼只能實現削峰,但是沒有實現鎖,這樣判斷在高并發的情況下 ,肯定會出現超賣的情況,因為如果同時有100個進程執行了$resdis->lLen($resdis_name)<10,都是返回true的。
建議使用decr方式,實現原子性的判斷
建議使用decr方式,實現原子性的判斷
2017-07-24
老師的教程只是提供一個思路,真實的場景如果另外一個程序一直在循環取redis隊列中的數據,在高并發的情況下肯定會出現超賣情況,那么可以在用戶秒殺結束redis隊列中數據達到秒殺人數后,關閉前臺頁面中的秒殺按鈕,點擊購買不再執行購買程序提示秒殺結束,然后再redis列中取數據->插入mysql->下訂單等等邏輯操作,個人理解不喜勿噴
2017-07-20
最新回答 / 921231
在操作數據庫時除查詢外的所有操作都是會加排它鎖的,所以如果在修改時有插入的話一般來說是不會有一些的,除非表被加排他鎖,會進入等待,超過等待時間就回滾。
2017-07-16