redis如何解决秒杀超卖问题
时间:2020-09-22 11:40:07
作者:重庆seo小潘
来源:
首先,生成库存的计数量 public function kucun(){//有十个库存$count=10;//添加到redis list中for($i=0;$i$count;$i++){Predis::getInstance()-lpush(kucun,111111111);}self::dd(Predis::getInstance()-lrange(kucun,0,-1));}完后利用redis的lpop或rpop对li
首先,生成库存的计数量 public function kucun(){//有十个库存$count=10;//添加到redis list中for($i=0;$i<$count;$i++){Predis::getInstance()->lpush('kucun',111111111);}self::dd(Predis::getInstance()->lrange('kucun',0,-1));}完后利用redis的lpop或rpop对list进行裁剪,之前采用llen或incr的方式对数据进行判断,都会出现超卖的现象,所以这里使用lpop的逻辑解决了超卖的问题 public function ru(){//判断计数器if (Predis::getInstance()->lpop('kucun')) {$user=User::where('user_id',1082)->find();//存入会员idPredis::getInstance()->lpush('user',$user['user_id']);//计数器累计加1// Predis::getInstance()->incr('number');echo '加入秒杀成功';exit();}else{echo '活动截至';exit();}}测试:ab -r -n 1000 -c 1000http://149.28.16.212/index/index/ru
更多Redis相关知识,请访问Redis使用教程栏目!以上就是redis如何解决秒杀超卖问题的详细内容,更多请关注小潘博客其它相关文章!