为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > PHP编程 正文

php使用redis watch 实现电商系统的秒杀抢购,防止超卖

三叶资源网 2022-09-12 20:18:50 PHP编程 269 ℃ 0 评论

redis的watch multi 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;
}

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
微信hook朗读易语言源码网FTP验证获取QQ资料卡Json助手内核读写内存自定义数据类型剖析多功能管理器SMTP发信未闻花名UI黑猫论坛易CEF3浏览器支持库access数据库skinsharphtmlHelp账号管理系统解析HTML语句sock5QQ机器人2.0源码
最新评论