thinkphp使用redis抢单实例
·
问题:当客户预约时产生一个订单,该订单需要业务人员抢单后跟进
一,产生订单时设置redis
$redis = new Redis();
$ydkey = "yyqd_".$orderId;
$exptime = 600;//过期时间 600秒
$redis->lpush($ydkey,$orderData);//压入订单ID
$redis->set("yyqdtime_".$orderId,1,$exptime);//设置过期时间
二,业务人员抢单
$redis = new Redis();
try{
$yyqdtime = $redis->get("yyqdtime_".$orderId);
if(empty($yyqdtime)){//过期了从数据库查询
}else{
$lsize = $redis->lsize("yyqd_".$orderId);
if($lsize <= 0){
$this->error('线上已被认领!');
}
$orderData = $redis->lpop("yyqd_".$orderId);//取出数据
if(empty($orderData)){
$this->error('线上已被认领!');
}
}
}catch (Exception $e){
//异常处理
}
三,也可直接在抢单时先将业务人员ID压入队列,另外启动进程从队列中逐个取出业务人员ID进行数据处理
更多推荐




所有评论(0)