`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