摘要:基于的消息队列实现固定库存商品抢购商品总库存需要在后台写入到库存队里中提前写入获取库存并减一写入队列抢购成功售卖完毕基于上面的基础解决购买数量存储,超时不支付订单取消订单并恢复库存商品总库存需要在后台写入到库存队里中提前写入
基于Redis的消息队列实现固定库存商品抢购
//商品总库存需要在后台写入到库存队里中,提前写入 $redis = new Redis(); $redis->connect("127.0.0.1",6379); $redis->auth("alloc"); $redis->select(1); //获取库存并减一写入队列 $k = $redis->lPop("sale_count"); echo $k; if($k>1){ if($k-1 == 0){ $redis->del("sale_count"); }else{ $redis->lPush("sale_count",$k-1); } echo "抢购成功!"; }else{ echo "售卖完毕!"; }基于上面的基础解决购买数量存储,超时不支付订单取消订单并恢复库存
connect("127.0.0.1", 6379); $redis->auth("alloc"); $redis->select(1); // $user_id = rand(1, 10000);//随机模拟用户ID 不去重复了实际情况下没有重复的 $buy_num = rand(1, 9);//随机模拟购买数量 //获取库存并减一写入队列 $k = $redis->lPop("sale_count"); if ($k > 1) { if ($k - $buy_num <= 0) { exit("库存不足"); }else{ $redis->rPush("get_good_list", $user_id);//将抢到顺序插入队列,在守护进程1中处理 $redis->setex($user_id, 1800, $buy_num);//设置超时时间30分钟 $redis->rPush("sale_count", $k - $buy_num); } echo "抢购成功!,请五分钟内支付"; } else { echo "售卖完毕!"; }
connect("127.0.0.1", 6379); $redis->auth("alloc"); $redis->select(1); //while (1){ $user_id = $redis->lPop("get_good_list"); if($user_id){ //获取购买数量 $buy_num = $redis->get($user_id); //创建订单 $order_no = createOder($user_id,$buy_num); //设置订单超时时间 $redis->setex($order_no,300,1);//5分钟未支付通知Daemon2.php } //}
connect("127.0.0.1", 6379); $redis->auth("alloc"); $redis->select(1); //不超时 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1); //创建事件监听,__keyevent@1__:expired,数字1代表数据库序号 $redis->psubscribe(array("__keyevent@1__:expired"), "keyCallback"); // 回调函数,这里写处理逻辑 function keyCallback($redis, $pattern, $chan, $order_no){ //获取订单信息 获取购买数量 $buy_num = getOderInfo($order_no); //关闭订单 closeOrder(); //加入库存 $redis->rPush("sale_count",$redis->lPop("sale_count")+$buy_num); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/36970.html
摘要:基于的消息队列实现固定库存商品抢购商品总库存需要在后台写入到库存队里中提前写入获取库存并减一写入队列抢购成功售卖完毕基于上面的基础解决购买数量存储,超时不支付订单取消订单并恢复库存商品总库存需要在后台写入到库存队里中提前写入 基于Redis的消息队列实现固定库存商品抢购 //商品总库存需要在后台写入到库存队里中,提前写入 $redis = new Redis(); $redis->co...
摘要:技术列表缓存中间件服务协调调度中间件消息中间件综合性质的中间件分布式锁分布式唯一生成服务雪花算法邮件服务权限认证授权矿建的登录认证服务以及等等。 概要介绍:历经一个多月的时间,debug亲自录制的Java商城秒杀系统的设计与实战视频教程(SpringBoot版)终于完成了!在本课程中,debug真正的将之前所讲解的相关技术融入到了本课程中,即本课程所介绍的秒杀系统是一个真正意义上的项目...
前言 在若干次前的一场面试,面试官看我做过python爬虫/后端 的工作,顺带问了我些后端相关的问题:你觉得什么是后端? 送命题。当时脑瓦特了,答曰:逻辑处理和数据增删改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 当场被怼得体无完肤,羞愧难当。事后再反思这问题,结合资料总结了一下。发现自己学过的Re...
摘要:持久化到中反向代理的负载均衡基于的集群搭建如何实现从中订阅消息转发到客户端的扩展是阻塞式,使用订阅发布模式时,会导致整个进程进入阻塞。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。 showImg(https://segmentfault.com/img/bVYE6k?w=900&h=385); Redis 是由意大利程序员 Salvatore Sanfilippo(昵称:a...
阅读 1363·2021-11-23 09:51
阅读 957·2021-10-12 10:12
阅读 666·2021-10-12 10:12
阅读 2576·2021-09-22 16:06
阅读 3414·2019-08-30 15:56
阅读 3155·2019-08-30 15:53
阅读 2963·2019-08-29 16:29
阅读 2231·2019-08-29 15:27