redis如何解决秒杀超卖问题


本文摘自PHP中文网,作者尚,侵删。

首先,生成库存的计数量

1

2

3

4

5

6

7

8

9

10

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的逻辑解决了超卖的问题

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public function ru()

   {  

       //判断计数器

       if (Predis::getInstance()->lpop('kucun')) {

           $user=User::where('user_id',1082)->find();

           //存入会员id

           Predis::getInstance()->lpush('user',$user['user_id']);

           //计数器累计加1

           // Predis::getInstance()->incr('number');

           echo '加入秒杀成功';exit();

       }else{

           echo '活动截至';

           exit();

       }

   }

测试:

1

ab -r -n 1000 -c 1000  http://149.28.16.212/index/index/ru

1.jpg

更多Redis相关知识,请访问Redis使用教程栏目!

以上就是redis如何解决秒杀超卖问题的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

redis如何解决秒杀超卖问题

更多相关阅读请进入《redis如何解决秒杀超卖》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...