zoukankan      html  css  js  c++  java
  • PHP解决抢购等阻塞式高并发redis处理思路

    //各种验证之后

                    $watchkey = "product_stock_95";
                    $redis->redis->watch($watchkey);
                    $redisstock = $redis->get($watchkey);
                    if($redisstock!==false){
                        $stocknum = intval($redisstock);
                    }else{
                        $stocknum = 0;
                    }
                    
                    if($stocknum<=0) {
                        die(json_encode(array('success'=>false,'flag'=>0)));
                    }
                do {
                        $newstock = $stocknum-$buynum;//库存-购买数量
                        $transactionResult = $redis->redis->multi()->set($watchkey,$newstock)->exec();//设置的库存
                        if($transactionResult){
                            //成功 业务处理
    
    
                        }else{
              
    $redis->redis->watch($watchkey); $redisstock = $redis->get($watchkey); if($redisstock!==false){ $stocknum = intval($redisstock); }else{ $stocknum = 0; } if($stocknum<=0) { die(json_encode(array('success'=>false,'flag'=>0))); } } } while (!$transactionResult);
  • 相关阅读:
    python django day 1
    C# 日常
    C# NPOI使用
    SharpZipLib 压缩ZIP导出
    JSON劫持
    跨站请求伪造CSRF或XSRF
    跨站脚本XSS安全
    会话窃取
    Cookie
    Promise -ES6
  • 原文地址:https://www.cnblogs.com/-lin/p/11325218.html
Copyright © 2011-2022 走看看