使用redis防止高并发场景下的超卖
给商品ID为1的商品初始化10个库存
$redis = new \redis();
$redis->connect("127.0.0.1", 6379);
$redis->del("goods_id:1");
for ($i=0; $i < 10; $i++) {
$redis->lpush("goods_id:1", 1);
}
下单库存判断
if (!$redis->lpop("goods_id:1")) {
throw new \Exception("库存不足");
}
// 执行业务逻辑
// 如果业务逻辑抛出异常,将库存还原
$redis->lpush("goods_id:1", 1);