• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

redis php 秒杀

php 搞代码 3年前 (2022-01-25) 12次浏览 已收录 0个评论
文章目录[隐藏]

想了解下秒杀系统的设计 于是百度如下

  1. 访问压力 即使是单纯静态页面 高并发下也是需要加机器的 解决方法 增加服务器 负载均衡
  2. 处理请求 网上有讲用redis队列缓存请求 然后取秒杀商品数量记录返回秒杀成功 其他秒杀失败 秒杀结束或者库存为0 停止加入队列
  3. 库存准确性需要特殊处理吗(使用队列的情况下)?
  4. 限流(随机1%的请求通过 99%直接返回失败)这一点我觉得小米的预约做的很好 没预约的直接无法进入抢购系统

但是对具体实现有很多疑问
比如:
用户的请求是什么样的过程,从请求到返回结果?
redis队列解决了那些问题?
负载均衡查询redis服务器?
整个过程不需要mysql参与吧?
秒杀商品数据缓存在redis?
如果用户秒到了 仅仅是redis标记这个人有购买资格而已吧 当进入购买时查询这个资格有则创建订单 理解对吗?

求大神解惑

回复内容:

想了解下秒杀系统的设计 于是百度如下

  1. 访问压力 即使是单纯静态页面 高并发下也是需要加机器的 解决方法 增加服务器 负载均衡
  2. 处理请求 网上有讲用redis队列缓存请求 然后取秒杀商品数量记录返回秒杀成功 其他秒杀失败 秒杀结束或者库存为0 停止加入队列
  3. 库存准确性需要特殊处理吗(使用队列的情况下)?
  4. 限流(随机1%的请求通过 99%直接返回失败)这一点我觉得小米的预约做的很好 没预约的直接无法进入抢购系统

但是对具体实现有很多疑问
比如:
用户的请求是什么样的过程,从请求到返回结果?
redis队列解决了那些问题?
负载均衡查询redis服务器?
整个过程不需要mysql参与吧?
秒杀商品数据缓存在redis?
如果用户秒到了 仅仅是redis标记这个人有购买资格而已吧 当进入购买时查询这个资格有则创建订单 理解对吗?

求大神解惑

用户请求:
用户进入代理机,代理机把请求分发给后端某一个web服务器,web服务器拿到用户请求以后通过php操作数据库或者redis,然后把结果返回给web服务器,最后呈现给用户。

redis队列主要解决了大并发的问题,因为他是队列的形式,一条一条处理的,不会造成因为并发大几个人同时更新一条数据,你想想看,如果有几百人的并发,没有用到redis,你的抢购资格是有限的,因为数据库缓存或者memcache的某些原因,几个人同时查到有一个抢购资格,结果都在update这条数据,造成的结果可能就是最后一个人update这条数据的人获得真正的抢购资格,其他人被他更新掉了,但是其他人前台返回的是已经抢到了。

正常来说,是不用mysql的,因为你的抢购资格,都会缓存在redis里面,看具体需求。

我也是菜鸟,大神勿喷。

采用层层过滤的思想来设计秒杀,前置nosql数据库过滤大多数用户,具体数字可以为库存的放大2到10倍,接下入队列,后端消费者接收队列消息,然后操作m2本文来源gaodaima#com搞(代@码$网6

搞gaodaima代码

ysql数据库进行更新下单,减库存。前台轮询结果

顶一下 求解

秒杀系统不要将流量都到落到后台处理服务器上,你有200个秒杀的产品,放前1000个用户过来就足够了(放200w个进来干嘛,纯粹累服务器);
通过这么一过滤,根本没有什么压力嘛;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:redis php 秒杀

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址