zoukankan      html  css  js  c++  java
  • php+redis实现简单秒杀抢购功能

     例子一:

    注意事务的运用

    <?php
    //php秒杀 redis并发处理
    function miaoshao(){
        
        $redis = new Redis;//diy redis操作类
        //连接
        $redis->connect('127.0.0.1', 6379,30);
        //设置密码
        $redis->auth('junyi');
        //获取库存出售的数量,默认为空
        $kuchun = $redis -> get('kucun');
        
        $total  = 100;
        
        if ($kuchun < $total){
            //有库存
            $redis -> watch('kucun');
            //开启事务
            $redis->multi();
            $redis->set("kucun",$kuchun+1);
            //执行事务
            $result = $redis->exec();
            if($result){
                
                //剩余数量
                $number = $total - ($kuchun +1);
                
                //$openid 用户id
                $openid = $number;
                $redis-> hset("list","user_".$openid,$kuchun);
                //获取抢购成功的用户
                $data = $redis-> hgetall('list');
                var_dump($data);
                var_dump($number);
            }else{
                var_dump('手气很差哦,再试一下!');
            }
            
        }else{
            var_dump('已经被抢光了');
        }
    }

    例子二:

    <?php
    //第一步:添加库存到链表里面;
    $redis = new Redis();
    $redis->connect(' ');
    $redis->auth(' ');
    //添加100件商品for($i=1;$i<=100;$i++){
        $redis->lpush('goods_store',1);
    }

    //第二步:开始抢购了 //设置库存的失效时间; $redis->setTimeout('goods_store',30);
    //第三步:执行抢购的代码
    $id = $redis->lpop('goods_store'); if(!$id){ echo 'buy fail'; }else { echo 'buy success'; } ?>

    参考:https://www.cnblogs.com/junyi-bk/p/11981512.html

  • 相关阅读:
    水壶-[Kruskal重构树] [解题报告]
    线性求逆元推导
    边界线与两端对齐
    左边竖条的实现方法
    $.ajax()知识
    area热点区域
    AJAX与XMLHttpRequest
    js运行机制
    优先级
    各种图形
  • 原文地址:https://www.cnblogs.com/zqblog1314/p/13276320.html
Copyright © 2011-2022 走看看