public function watch($id,$uid){
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$redis->auth('qiusuo521.');
//监视销量,给key打上标签,
$redis->watch("sales");
$sales = $redis->get('sales');
$store = 3;
if($sales >= $store){
return false;
}
//记录用户信息,更新库存
//保证这一组命令,要么全部成功,要么都不成功
$redis->multi();//开始事务
$redis->incr("sales");//增加销量
$redis->lPush('user',$uid . ':' . $id);
$result = $redis->exec();//提交,判断当前的key是否被某个客户端修改了
if($result){
$res = Db::table('products')->where('id', $id)->setDec('wareHouseCount');
if($res){
return true;
}else{
return false;
}
}
}
public function a(){
$id = 1;
$uid = 1;
$watch = $this->watch($id,$uid);
$m3_result = new M3Result();
if($watch){
$m3_result->status = 1;
$m3_result->message = "抢购成功!";
}else{
$m3_result->status = 0;
$m3_result->message = "抢购失败!";
}
return $m3_result->toJson();
}
php+redis乐观锁实现商品秒杀
猜你喜欢
转载自blog.csdn.net/qq_43737121/article/details/113546454
今日推荐
周排行