侧边栏壁纸
博主昵称
梦之中小俊

以前高中时,羡慕大学考试只要及格就行;现在大学了,怀念高中考试及不及格都行??

PHP

ThinkPHP6.0 Redis 秒杀

梦之中小俊
2023-03-08 / 0 评论 / 367 阅读 / 推送成功!
好久没写内容了,今天写一个秒杀小测试,还是思路比较重要一点。虽然在目前的项目中用户量没有达到一定的级别正常的mysql 并发都能使用一般小系统,废话不多说上才艺。

   //采用缓存方式的 秒杀小测试
	public function addGoodsStock1(){
		Cache::set('goods_num',50);
	}
	public function buy1(){
		$user_id=md5(uniqid('user').time());
		if(Cache::get('goods_num')>0){
			$num=Cache::get('goods_num');
			$num=$num-1;
			Cache::set('goods_num',$num);
        	$goods_name='苹果手机';
        	Db::name('demo')->insert([
        		'user_id'=>$user_id,
        		'goods_name'=>$goods_name,
        		'goods_id'=>1,
        		'create_time'=>date('Y-m-d H:i:s')
        	]);
            //秒杀成功
            return Json([
		        'code'=>0,
		        'data'=>[],
		        'msg'=>'秒杀成功'
		    ]);
        }else{
            //秒杀失败
            return Json([
		        'code'=>1,
		        'data'=>[],
		        'msg'=>'暂无库存'
		    ]);
        }
	}
	//采用redis 秒杀小测试
	public function addGoodsStock2(){
		//设定商品数量
        $count=20;
        $listKey="goods_list";
        //创建连接redis对象
        $redis=Cache::store('redis')->handler();
        for ($i=1;$i<=$count;$i++){
            //将商品id push到列表中
            $redis->rPush($listKey,$i);
        }
	}
	public function buy2(){
		//假装是用户的唯一标识
        $user_id=md5(uniqid('user').time());
        $redis=Cache::store('redis')->handler();
        $listKey="goods_list";
        if ($goodsId=$redis->lPop($listKey)) {
        	$goods_name='苹果手机';
        	Db::name('demo')->insert([
        		'user_id'=>$user_id,
        		'goods_name'=>$goods_name,
        		'goods_id'=>1,
        		'create_time'=>date('Y-m-d H:i:s')
        	]);
            //秒杀成功
            return Json([
		        'code'=>0,
		        'data'=>[],
		        'msg'=>'秒杀成功'
		    ]);
        }else{
            //秒杀失败
            return Json([
		        'code'=>1,
		        'data'=>[],
		        'msg'=>'暂无库存'
		    ]);
        }
	}​

 

采用ab测试

ab -n 10000 -c 1000 http://192.168.1.16/***/buy2

10000是总访问次数,1000并发次数

本文共 个字数,平均阅读时长 ≈ 分钟,您已阅读:0时0分0秒。
3

打赏

评论 (0)

OωO
  • ::(呵呵)
  • ::(哈哈)
  • ::(吐舌)
  • ::(太开心)
  • ::(笑眼)
  • ::(花心)
  • ::(小乖)
  • ::(乖)
  • ::(捂嘴笑)
  • ::(滑稽)
  • ::(你懂的)
  • ::(不高兴)
  • ::(怒)
  • ::(汗)
  • ::(黑线)
  • ::(泪)
  • ::(真棒)
  • ::(喷)
  • ::(惊哭)
  • ::(阴险)
  • ::(鄙视)
  • ::(酷)
  • ::(啊)
  • ::(狂汗)
  • ::(what)
  • ::(疑问)
  • ::(酸爽)
  • ::(呀咩爹)
  • ::(委屈)
  • ::(惊讶)
  • ::(睡觉)
  • ::(笑尿)
  • ::(挖鼻)
  • ::(吐)
  • ::(犀利)
  • ::(小红脸)
  • ::(懒得理)
  • ::(勉强)
  • ::(爱心)
  • ::(心碎)
  • ::(玫瑰)
  • ::(礼物)
  • ::(彩虹)
  • ::(太阳)
  • ::(星星月亮)
  • ::(钱币)
  • ::(茶杯)
  • ::(蛋糕)
  • ::(大拇指)
  • ::(胜利)
  • ::(haha)
  • ::(OK)
  • ::(沙发)
  • ::(手纸)
  • ::(香蕉)
  • ::(便便)
  • ::(药丸)
  • ::(红领巾)
  • ::(蜡烛)
  • ::(音乐)
  • ::(灯泡)
  • ::(开心)
  • ::(钱)
  • ::(咦)
  • ::(呼)
  • ::(冷)
  • ::(生气)
  • ::(弱)
  • ::(狗头)
泡泡
阿鲁
颜文字
取消
  1. 头像
    6767 Lv.1
    iPhone · Safari
    沙发

    画图

    回复
  2. 头像
    6767 Lv.1
    Windows 10 · Google Chrome
    板凳

    表情

    回复
  3. 头像
    透露 Lv.2
    Android · QQ Browser
    第30楼

    649494848

    回复