thinkphp5使用redis分布式锁来实现抢购

发布时间:2022-01-25 11:26:28 阅读:1696次

redis利用分布式锁来实现抢购

         //do {
            $timeout = 10;
        $processid = rand(1, 100000).rand(1, 100000);
        $key = 'process_lock';
        $value = 'process_'.$processid;
        $isLock = Cache::store('redis')->rawCommand('set',$key, $value,"EX",$timeout,"NX");
        if ($isLock) {
            $is_check = Db::name('goods_order')->where('goods_id', 1)->where('username', '1381646')->count();
            if ($is_check >= 10) {
                echo '该团已结束!';
                if (Cache::store('redis')->rawCommand('get',$key) == $value) {
                    Cache::store('redis')->del($key);
                }
                exit;
            }
            $time = time();
            $sql = "INSERT INTO `goods_order` ( `sid`, `order_sn`, `username`, `goods_id`) VALUES (1, '20220123180655265788', '1381646', 1);
";
            Db::name('goods_order')->execute($sql);

            //秒杀成功
            Db::name('goods_list')->where('id', 1)->setInc('sold_number');
            Db::name('goods_list')->where('id', 1)->setDec('goods_number');

            if (Cache::store('redis')->rawCommand('get',$key) == $value) {
                Cache::store('redis')->del($key);
                                //continue;
            }
            echo "yes";
        }else{
            echo "no";
        }
//            } else {
//                usleep(5000);
//            }
//        } while(!$isLock);

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:thinkphp5使用redis分布式锁来实现抢购 出自老鄢博客 | 欢迎分享