php+redis高并发秒杀方案(个人见解)

liyuzhao7年前开发项目遇到的问题2155

需求:

1:一个商品,库存只有100

2:网站很出名,估计并发量为50W

3:实现秒杀。

 

分析:

1:库存只有100,只能操作更新db库存 100

2:访问量大,采用redis来做并发处理

3:设置库存量不能为负

 

思路:

1:后台设置一个功能,该功能把商品库存放到redis队列中,从右边放入。

@先判断redis队列是否已经存在库存,如果存在则提示库存已存在

@连接数据库得到库存

@循环放到redis缓存队列中

2:秒杀代码实现

@用户点击秒杀商品,则连接redis,查询队列是否存在库存,如果存在,就从队列左边弹出一个,

然后把该用户的id放到一个新的缓存队列中,然后判断该队列,如果存在绑定的用户则循环生成

订单并且更新库存。

@注意,如果生成订单或者更新库存出错,必须要做相应的处理。比如:如果订单生成失败,则重

新把用户放到缓存队列中(从右边进)。如果订单生成成功,库存更新失败,则把该用户id放到另

一个缓存队列中(该队列为是否更新库存成功),然后对该队列做判断,如果存在用户,则继续更

新减少库存。


相关文章

iview使用v-for循环数据的更新问题。

iview使用v-for循环数据的更新问题。

最近在接数据中,遇到了一个v-for循环数组获取数据,但是这个数组可能会被操作,所以这个数组要实时更新。用了vue的双向绑定,但是不好用,经过查资料,发现:由于 JavaScript 的限制, Vue...

iview使用vue-quill-editor自定义上传图片的问题解决。

iview使用vue-quill-editor自定义上传图片的问题解决。

最近虽然辞职了,但是以前的老板外包给我以前负责的项目,想让我做好社群的独立后台,所以打算花二十天做完。“企动社群”的后台接口我已经写完,页面采用iview,数据还是由我来接,真是件麻烦的事,不过对于这...

vue 使用axios请求成功的this问题

vue 使用axios请求成功的this问题

一个简单的例子://上面的this.$http.get是中的this是vue的实例。axios的文档中,get请求是如上面所写的,上面代码的意思是请求登录返回数据。一般做的逻辑处理是请求成功后要跳转,...

apache设置缓存

在配置文件输入ExpiresActive On    ExpiresDefault “access plus 30 days” 欢迎大家来校园淘物站的论坛玩玩哦...

在 hyperf 中使用 MongoDB

欢迎使用 phper666/mongo-db,地址:https://github.com/phper666/mongo-db1、默认使用mongodb提供的库来封装,官方git地址:https://g...

使用apache2.4以上外网访问不到的问题解决

找到加入一行Require all granted即可注意:每个人的安装路径都不一样,要看准安装路径来查找...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。