php发展

首页 » 常识 » 问答 » win10phpluadocker
TUhjnbcbe - 2023/2/5 16:15:00

面试的时候经常会被问到秒杀任务的设计和实现,我之前遇到过很多次,回答得不是很好,我目前在职的公司正好有高并发的项目,所以结合自己公司的项目加上之前面试官问的一些问题。

今天就用实际代码来实现一下秒杀任务简单实现,个人认为掌握这个方法,面试PHP中级,15K-20K基本稳妥的。

开发环境如标题,window10,某个成就1亿人的技术网站调查显示大部分人还是用windows开发。后端语言用的PHP7.3,redis我是用的dockerdesktop安装的redis6.x,windows本地也能装,因为本地我要安装redis集群,所以就有docker安装redis了,redis6在windows上还不支持集群。

性能测试工具用的AB,服务器上可以用wrk性能测试;好了,这些环境的搭建我就不细说了,初级开发的话这些工具安装应该轻车熟路了。

直接贴代码,展示测试结果:

?php$redis=new\Redis();$redis-connect(.0.0.1,);//加锁,分布式锁,设置库存为$redis-setnx(stock,);//模拟用户ID$user_id=rand(0,000);//lua脚本,非常简单$lua=SCRIPTlocaluserId=KEYS[1];localgoodKey=KEYS[2];localstock=KEYS[3];localuserExit=redis.call("sismember",goodKey,userId);iftonumber(userExit)==1thenreturn2;endlocalnum=redis.call("get",stock);iftonumber(num)=0thenreturn2;elseredis.call("decr",stock);redis.call("sadd",goodKey,userId);endreturn1;SCRIPT;//eval执行lua脚本$result=$redis-eval($lua,[$user_id,goods_id,stock],3);if($result==1){echo秒杀成功;}else{echo秒杀失败;}

docker中的redis,端口,RDM工具可以直接连接到docker中的redis

RDM连接redis

AB压测工具,压缩包下载放到本地,解压就可以使用,无需安装

cmd进入AB的bin目录,执行命令

ab-n0-c-k"

1
查看完整版本: win10phpluadocker