thinkphp5与Redis秒杀商品,并安装jmeter进行压力测试

3 篇文章 0 订阅
2 篇文章 0 订阅
本文介绍了如何配置和使用Redis扩展实现ThinkPHP框架中的秒杀功能,包括设置Redis密码、添加秒杀商品到队列以及处理秒杀逻辑。同时,文章还讲解了如何进行性能测试,包括安装JDK、下载JMeter以及设置压力测试场景,确保系统能够承受高并发的秒杀请求。
摘要由CSDN通过智能技术生成

1.开启php的redis扩展并安装redis

2.在框架的thinkphp/library/think/cache/driver/redis.php设置redis的密码

3.添加秒杀商品到redis中(我以商品编号为1的进行秒杀)并进行秒杀

//添加秒杀商品到redis中
public function seckill_add(){
        $redis = new Redis();
        $obj = $redis->handler();
        for ($i=1;$i<=10;$i++){
            $obj->lpush("seckill_product_1",$i);
        }
    }
//开始秒杀(用户随机)
public function seckill_start(){
        $user = mt_rand(50,10000);
        // 创建一个订单
        $redis = new Redis();
        $obj = $redis->handler();
        $restful = $obj->lpop('seckill_product_1');
        if (!$restful){
            return json(["status" => false,"message" => "失败"]);
        }
        $order = Db::table("order")->insert([
            'address'=>'成都市 武侯区',
            'total_amount' =>'188',
            'is_pay'      =>  1,
            'user_id'=>$user
        ]);
        if ($order){
            return json(["status" => true,"message" => "下单成功,请到订单页面支付"]);
        }else{
            return json(["status" => false,"message" => "秒杀异常"]);
        }
    }

order表:
CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `address` varchar(255) DEFAULT NULL,
  `total_amount` decimal(50,0) DEFAULT NULL,
  `is_pay` varchar(255) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.在安装jmeter之前需要先安装jdk,因为jmeter是通过jdk运行的,然后设置好环境变量

5.下载jmeter,运行bin/jmeter.bat文件,进入jmeter之后

  1)点击文件新建计划

  2)在编辑里面添加一个线程组

  3)然后在线程组里添加HTTP请求设置好之后点击上方运行按钮,如图 

      

 4)在http请求里的监听器里,添加察看结果树,目前测试一秒跑20000个线程数据是没有问题的

  

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值