有一个秒杀商品,只有10件,10万人来秒 怎么弄
Redis,你的不二选择。
唯一的问题是,你是按照付款成功减数量,还是按下秒杀就减数量。如果是按照付款成功,稍稍麻烦,你要锁定,还有解锁。
1.获取总数,存在数据库 2.有人拍下,获取当前已有多多少人拍下的总数 3.比较小于总数,可以拍,否则不让拍 4.减数量
先考虑各种方法降低你的数据库负载。
然后再考虑秒杀的公平性。
所以嘛,比如,你可以根据请求的时间戳做个规则,把 99% 甚至更多的请求直接扼杀在摇篮之中。
剩下的 1% 或者更少的请求再考虑按照公平的方法去竞争那为数不多的名额。
redis 啊,mq 啊,MySQL 事务啊,反正流量下来的,用啥都行。
我觉得这里有三个问题,1.公平,2.商品卖光,3.缓解系统压力。
公平如何保证:
商品卖光:
缓解系统压力:
自己的一点想法~~