返回

php使用redis watch秒杀抢购

发布时间:2022-10-17 10:34:22 318
# redis# 数据
exec 方法实现秒杀抢购。优点:使用了乐观锁没有锁的等待,比队列方式减少了大量的内存消耗。
 watch 监视一个或多个key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断.
$redis = new redis();
$result = $redis->connect('127.0.0.1',6379);
$getnum = $redis->get('getnum');//已抢数量
$num = 100;//抢购总数量
if($getnum < $num){
    $redis->watch('getnum');//监听key
    $redis->multi();//开启事务
    //插入抢购数据
    $redis->hSet("userList",'user_id_'.mt_rand(1,999),time());
    $redis->set("getnum",$getnum+1);//抢购到+1
    $robResult = $redis->exec();//执行事务
        if ($robResult) {
        echo "抢购成功!<br/>";
        echo "剩余数量:" . ($num - ($redis->get("getnum"))) . "<br/>";
        echo "用户列表:<pre>";
        var_dump($redis->hGetAll("userList"));
    } else {
        echo "手气不好,再抢购!";
        exit;
    }

}else{
     echo "已售罄";
     exit;
}

 

世界上最美的风景,是自己努力的模样

 

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
document.links对象集合 2022-10-17 10:24:31