猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
有没有童鞋遇到过同样的问题:插入数据库如何考虑高并发?万分感谢
我想问下比如做一个高并发的秒杀活动如果都用了redis缓存那啥时候做插入数据库的操作比如活动进行中的时候谁秒杀到了都存入了缓存那什么时候才把他们对应的奖品存数据库呢?
不负相思意
浏览 251
回答 2
2回答
慕后森
可以用队列消费异步写mysql。每次写入redis后,发送一条消息到队列中,消费者获取到消息后,通过redis获取订单信息,写入mysql。也可以设置一个定时,几分钟跑一次,拉取一次redis中的几分钟内新增的订单,写入mysql。不过这个就需要注意redis占用问题,如果设计有缺陷可能会阻塞redis。同时也要做好redis的持久化,免得redis崩溃后没有持久化的数据丢失导致订单对不上。
0
0
0
守着一只汪
把库存写入队列,每次请求就从队列里取值,如果有值就按正常请求处理。比如设置了100的库存,最终到数据库的就只有100个请求。100个请求不算大并发当一个请求过来时,php-fpm就创建一个进程,专门接待这个请求,直到处理完这个请求。php-fpm能同时派出很多人(进程),互不干扰。服务器处理器和内存越大,php-fpm就能派出越多的人。这个不需要php程序员操心。当然,处理器和内存一定的情况先,如果每个人的工作量越小(程序设计的越优),php-fpm就能同时派出更多的人。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续