php redis下单,redis 队列简单实现高并发抢购/秒杀

redis 队列简单实现高并发抢购/秒杀

2019-03-21 14:34

阅读数 82

前提为每人限购1件

<>开抢前

把秒杀商品库存存进 Redis 队列中

$redis = new redis(); $redis->connect('127.0.0.1', 6379); //库存 $num = 10;

//往队列 goods_store 插入商品, 队列的长度为库存 for($i=0;$ilpush(

'goods_store', 1);

<>开抢中

方法1

前端: 用户点击购买按钮进行form表单提交

后端: 执行下面代码

//用户等待队列 $wait_key = "user_wait"; //库存队列 $store_key = "goods_store"; //根据Redis

hash特性, 设置成功返回1, 旧值被覆盖则返回0, 用来控制同一用户多买现象 $result = $redis->hset($wait_key,

$user_id, $user_id); if($result){ $count = $redis->lpop($store_key); if(!$count)

return '已经抢光了'; //下单流程, 数据库入库等操作 //下单失败或报错则执行 $redis->hdel($wait_key,

$user_id); 和加库存 $redis->lpush('goods_store', 1); 并跳转回上一页提示下单失败 ......

//下单成功则跳转到相应页面 return '抢购成功'; }

问题: 高并发

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值