使用Redis解决高并发(超卖现象)

原理:假设一个商品有一百件 把这个一百循环存入redis 遇到请求就弹出一个
因为redis就算你再多高并发你还是要乖乖的排队 
header("content-type:text/html;charset=utf8");
ini_set("display_errors",1);
$redis = new Redis();
$redis->connect("192.168.109.132",6379);//连接
$redis->auth("lzc"); //验证
/* //先循环存储商品件数 记得存储完注释掉
for ($i=0;$i<100;$i++){
    $redis->lPush("comm",$i);
}
*/
$num = $redis->lPop("comm"); //弹出并获取第一个元素
if (!$num){ //判断是否有值 没值就代表商品已经卖完了
    echo json_encode(["code"=>2,"msg"=>"商品已经被抢购完了!"]);
}else{
    $order_from = "jd-".time()."x".$num; //生成唯一订单
    $redis->lPush("orders",$order_from); //存入redis
    echo json_encode(["code"=>2,"msg"=>"成功!"]);
}

你可能感兴趣的:(Linux,Redis)