使用redis秒杀出现产品超发现象求解?
程序员文章站
2024-01-31 09:39:28
...
最近在做一个秒杀活动,处于性能和响应速度的考虑,使用了redis。写的时候就特别注意了杜绝超发现象,基于redis理论的cas(check and set)乐观锁,想着应该能够杜绝该问题,但是还是出现了,很疑惑求大神帮助,具体的代码大致如下:
connect('10.10.10.119', 6379);
$mywatchkey = $redis->get("mywatchkey");
$rob_total = 100; //抢购数量
if($mywatchkeywatch("mywatchkey");
$redis->multi();
//设置延迟,方便测试效果。
sleep(5);
//插入抢购数据
$redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time());
$redis->set("mywatchkey",$mywatchkey+1);
$rob_result = $redis->exec();
if($rob_result){
$mywatchlist = $redis->hGetAll("mywatchlist");
echo "抢购成功!
";
echo "剩余数量:".($rob_total-$mywatchkey-1)."
";
echo "用户列表:";
var_dump($mywatchlist);
}else{
echo "手气不好,再抢购!";exit;
}
}
?>
上一篇: 一步一步教你网站同步镜像(转载)