电商系统经常会有各种活动,如团购、秒杀、特价。活动商品库存有限,面对段时间成千上万的用户抢购,怎么保证商品不会超卖?
例子
商品ID:100
总库存:20个
请求人:a(购买5个)、b(购买10个)、c(购买6个)
分析:由于5+10+6=21大于总库存,所以必定第三人不能购买成功,否则库存超卖
减库存SQL
下单必须有足够的库存, 所以库存必须大于需要购买的库存数量
下单量大怎么处理
下单量大的话,会有大量的写请求打到Mysql服务器,造成数据库服务器压力甚至导致数据库宕机,所以我们利用Redis decrby命令来减少大量到达Mysql的请求
Redis脚本压测
压测预期:100个库存被购买完毕,且最终库存数为0,不会为负数
压测命令
|
|
压测结果
|
|
压测日志
|
|
最终库存
|
|
符合预期