码迷,mamicode.com
首页 > Web开发 > 详细

php+redis实现简单秒杀抢购功能

时间:2020-07-09 22:20:44      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:注意   Nid   简单   ber   push   out   timeout   秒杀   color   

 

 例子一:

注意事务的运用

<?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

php+redis实现简单秒杀抢购功能

标签:注意   Nid   简单   ber   push   out   timeout   秒杀   color   

原文地址:https://www.cnblogs.com/zqblog1314/p/13276320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!