PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    php使用redis watch秒杀抢购

    作者:admin来源:网络浏览:时间:2021-01-28 16:45:59我要评论
    导读:redis的watch multi exec 方法实现秒杀抢购。优点:使用了乐观锁没有锁的等待,比队列方式减少了大量的内存消耗。
    redis的watch multi exec 方法实现秒杀抢购。优点:使用了乐观锁没有锁的等待,比队列方式减少了大量的内存消耗。

    1. <?php 
    2. header("content-type:text/html;charset=utf-8"); 
    3. $redis = new redis(); 
    4. $result = $redis->connect('127.0.0.1', 6379); 
    5. $gots = $redis->get("gots");  // 已抢数量 
    6. $robTotal = 100;  // 抢购总数量 
    7. if ($gots < $robTotal) { 
    8.     $redis->watch("gots");  // 监听key 
    9.     $redis->multi();  // 开启事务 
    10.     //插入抢购数据   
    11.     $redis->hSet("userList""user_id_" . mt_rand(1, 9999), time()); 
    12.     $redis->set("gots", $gots + 1);  // 抢购到+1 
    13.     $robResult = $redis->exec();  // 执行事务 
    14.     if ($robResult) { 
    15.         echo "抢购成功!<br/>"
    16.         echo "剩余数量:" . ($robTotal - ($redis->get("gots"))) . "<br/>"
    17.         echo "用户列表:<pre>"
    18.         var_dump($redis->hGetAll("userList")); 
    19.     } else { 
    20.         echo "手气不好,再抢购!"
    21.         exit; 
    22.     } 
    23. }else { 
    24.     echo "已售罄"
    25.     exit; 

     

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-6491-1.html
    上一篇:php下载方法