秒杀 抢购

抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:
1 高并发对数据库产生的压力
2 竞争状态下如何解决库存的正确减少(”超卖”问题)
对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。
重点在于第二个问题

常规写法:
查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数
[php] view plain copy

[php] view plain copy

– 数据库: big


– 表的结构 ih_goods

CREATE TABLE IF NOT EXISTS ih_goods (
goods_id int(10) unsigned NOT NULL AUTO_INCREMENT,
cat_id int(11) NOT NULL,
goods_name varchar(255) NOT NULL,
PRIMARY KEY (goods_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

– 转存表中的数据 ih_goods

INSERT INTO ih_goods (goods_id, cat_id, goods_name) VALUES
(1, 0, ‘小米手机’);


– 表的结构 ih_log

CREATE TABLE IF NOT EXISTS ih_log (
id int(11) NOT NULL AUTO_INCREMENT,
event varchar(255) NOT NULL,
type tinyint(4) NOT NULL DEFAULT ‘0’,
addtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

– 转存表中的数据 ih_log


– 表的结构 ih_order

CREATE TABLE IF NOT EXISTS ih_order (
id int(11) NOT NULL AUTO_INCREMENT,
order_sn char(32) NOT NULL,
user_id int(11) NOT NULL,
status int(11) NOT NULL DEFAULT ‘0’,
goods_id int(11) NOT NULL DEFAULT ‘0’,
sku_id int(11) NOT NULL DEFAULT ‘0’,
price float NOT NULL,
addtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’订单表’ AUTO_INCREMENT=1 ;

– 转存表中的数据 ih_order


– 表的结构 ih_store

CREATE TABLE IF NOT EXISTS ih_store (
id int(11) NOT NULL AUTO_INCREMENT,
goods_id int(11) NOT NULL,
sku_id int(10) unsigned NOT NULL DEFAULT ‘0’,
number int(10) NOT NULL DEFAULT ‘0’,
freez int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘虚拟库存’,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’库存’ AUTO_INCREMENT=2 ;

– 转存表中的数据 ih_store

INSERT INTO ih_store (id, goods_id, sku_id, number, freez) VALUES
(1, 1, 11, 500, 0);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用说明: 一,(关于参数设置功能说明:) 1,淘宝秒杀网址:就是秒杀秒杀商品页面的网址。 2,打开/登录:输入淘宝秒杀网址后,在秒杀前必须按一次这个按钮,如果没有登录会提示登陆,如果已经登陆会打开淘宝秒杀商品页面。 3,退货运费险和匿名购买:货运费险只有部分商家有,这可以不管它,是不是使用匿名购买邮大家自由选择,打钩表示:匿名购买,如果商家不允许匿名购买的话就得自己去掉匿名购买前面后钩。 4,运费:默认是快递,一般不用管它,如果是卖家包邮的话也不用管它。 5,答题抢拍和刷新频率:答题抢拍功能尚在测试中,暂不提供。刷新频率就是秒杀的时候自动刷新的间隔时间。 6,上架时间:在输入淘宝秒杀网址后按一次“上架时间”按钮可以查看秒杀商品的开始时间。 7,停止抢拍:当不想秒杀时可以按这个按钮停止并关闭淘宝网自动抢拍器。 8,开始抢拍:这个按钮是在需要抢拍的时候按的。 二,(关于秒杀资源功能说明:) 1,在窗口最大化后可以看到有“秒杀资源”的功能,提供了淘宝商城包邮和不包邮的秒杀资源信息。根据需要可以设置查看秒杀页面数量。默认为:20页。 2,点击:淘宝商城秒杀(不包邮)就查看不包邮的商城秒杀信息。点击:(包邮)就查看包邮的商城秒杀信息。 三,(使用说明:) 如果出现报毒,先说明一下: 本软件使用易语言中文编程开发,中文编程跟英文软件编译有很大的区别,国内安全软件并没有投入太多的资金去研究这款编程软件(像360)害怕者勿下!希望各位下载前看清楚介绍和注意事项再评论,谢谢!害怕勿下!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值