1.4redis小结--队列在抢购活动的实现思路

思路:采用 客户队列,抢购结果队列,库存队列

1.1用户排队

<?php
//连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //思路:采用 客户队列,抢购结果队列,库存队列 //登录验证 获取用户id,实现客户队列 $cus_id = uinfo(); //检测活动库存是否大于0 $stock = $redis->get('stock'); if($stock > 0){ //检测当前抢购活动排队人数 $cus_list_len = $redis->Llen('cus_panic_purchase'); if($cus_list_len> 5 ){ var_dump('当前排队人数过多,请稍后再试'); exit; }else{ //排队 $redis->lpush('cus_panic_purchase',$cus_id); var_dump('排队成功'); exit; } }else{ //库存为0,则提示抢购活动已过期 var_dump('商品已被抢购完啦'); exit; } //模拟登录验证获取用户id function uinfo(){ return $cus_id = rand(1,1000); }

1.2脚本循环读取排队队列进行出队 下单 减库存

//出队 先进先出
$cus_id = $redis->rpop('cus_panic_purchase');

//下单

//减库存

 

以上是秒杀活动采用队列的大概思路,当然,具体业务需要根据实际产品需求而定。

比如后台对于秒杀活动的配置,秒杀活动完成后的活动数据统计分析,是否存在多个秒杀活动,秒杀活动的库存锁定的时间节点,库存是下单的时候减还是具体用户支付后减等等都是实际程序设计中需要考虑到的问题。

可以对活动配置信息生成数组,然后序列化成json,存在到redis中。

如有更好的思路欢迎多多交流!

 

posted @ 2018-03-05 15:50  坚持奔跑在路上  阅读(504)  评论(0编辑  收藏  举报