ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

thinkphp使用redis抢单实例

thinkphp使用redis抢单实例

问题:当客户预约时产生一个订单,该订单需要业务人员抢单后跟进

一,产生订单时设置redis

$redis = new Redis();
$ydkey = "yyqd_".$insertId;
$exptime = 600;//过期时间 600秒
$redis->lpush($ydkey,$$data);//压入订单ID
$redis->expire($ydkey, $exptime);//设置过期时间
$redis->set("yyqdtime_".$insertId,1,$exptime);

二,业务人员抢单

        $redis = new Redis();try{$yyqdtime = $redis->get("yyqdtime_".$id);if(empty($yyqdtime)){//过期了从数据库查询}else{$lsize = $redis->lsize("yyqd_".$id);if($lsize <= 0){$this->error('线上已被认领!');}$data = $redis->lpop("yyqd_".$id);//取出数据           if(empty($data)){$this->error('线上已被认领!');}   }}catch (Exception $e){//异常处理}

三,也可直接在抢单时先将业务人员ID压入队列,另外启动进程从队列中逐个取出业务人员ID进行数据处理

返回列表