php redis抢购功能

$redis=new \Redis();
        $redis->connect('localhost',6379);
        $redis->auth('123456');
        $goods_id=$request->input("goods_id");//1

        //商品库存
        $goods_store=DB::select("select store from qlc_goods where id=$goods_id");
        $store=$goods_store[0]->store;//1
/*
 * $count商品队列长度每次-1,若队列长度为0,返回false
 * $res 刚开始队列长度为0,后来长度为库存量
 * */
        $res=$redis->llen('store');
        $count=$store-$res;
        for($i=0;$i<$count;$i++){
            $redis->lpush('store',1);
        }
        $redis->llen('store');
//        出队列
        $count=$redis->lpop('store');

        if(!$count){
            $data['code']=0;
            $data['mess']="失败";
            return json_encode($data);
        }else{
            //        生成订单
            //库存减少
            $bool= DB::update("UPDATE qlc_goods set store=store-1 WHERE id=$goods_id");
            if($bool){
                $data['code']=1;
                $data['mess']="抢购成功";
            }else{
                $data['code']=0;
                $data['mess']="失败";
            }
            return json_encode($data);
        }
 

猜你喜欢

转载自blog.csdn.net/weixin_43310339/article/details/84280861