最新回答 / 慕少4427295
队列里的数据时异步处理的,然后存进数据库,但是他访问那个连接的时候就相当于多个用户去秒杀了,输出的结果(成功或者结束)就实时的反应了是否秒杀成功。
2018-07-12
最新回答 / qq_工作专用_1
在根目录运行 ./goods.sh回车,会提示“坏的解释器....”,然后输入:sed -i 's/\r$//' goods.sh回车,再继续运行shell脚本试试
2018-06-30
最赞回答 / 慕沐4218383
一半你请求三方接口,三方接口会做限制,不会让你太高频次的请求,也不会有并发的情况出现。如果出现的你说的情况是可以的,也要看你说的比较是多大,redis单个值的最大长度是512M,但是好像不要超过1M,否则效率不是很好,用memcached会好一点吧
2018-04-30
最新回答 / 回首已是千年
按照课程的讲法的意思,在pop的时候设置了seelp(2) 两秒钟执行一次pop, 因为秒杀的时候速度非常的快,最多只是微妙数不同,其实在这pop的时间间隔内队列中早已插入了限定的元素个数了不会在插入元素了,也就是说这个时候前端对于秒杀已经判断好了。也就是说已经结束了。这个时候后面在对这十个元素进行入库操作。
2018-04-29
最赞回答 / qq_TheLeftEar_0
这个锁完全是自己yy的一个锁, 完全没有起到作用; 试想一下: 第一次执行 修改2条记录为 状态更新为2 。 然后搜索状态为 2 的数据 (2条); 处理数据 (此时处理流程在复杂状态下1分钟内只处理了1条);1分钟后, 第二次执行 修改2条记录为 状态更新为2 。 然后搜索状态为 2 的数据 (3条,2条是本次更新的记录,还有1条是上次没有处理完成的); 处理数据 (此时是不是有一条数据重复处理了???);
2018-03-31
最赞回答 / MiraclesGG
因为开始已经在终端执行了一个读取redis缓存的文件,这个PHP文件里面写的是死循环,每2秒读取一次redis的队列。所以后面看到的数据是2秒一次添加进去的。
2018-03-05