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

Posted 养猪至富

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于php+redis实现简单秒杀抢购功能的主要内容,如果未能解决你的问题,请参考以下文章

php结合redis实现高并发下的抢购秒杀功能

PHP和Redis实现在高并发下的抢购及秒杀功能示例详解

php结合redis实现高并发下的抢购秒杀功能

php结合redis实现高并发下的抢购秒杀功能

php结合redis实现高并发下的抢购秒杀功能

php结合redis实现高并发下的抢购秒杀功能