有一个抽奖活动,每个用户默认初始只给一次抽奖机会,然后可以通过分享增加一次抽奖机会。 这个活动会在线半年或者更长。 现在的设计是在 User 表中添加一个剩余次数 lottery_num <tinyint> 字段。 假如当天的日活是 50W 上下,那么这个抽奖次数应该怎么记录。 如果放入redis中,那redis挂掉怎么办? 但是放入mysql中会影响性能。 有没有大佬讲解迷惑。谢谢!
“放入 redis 中,那 redis 挂掉怎么办”。 好问题,那你其他数据“放到 mysql 里,mysql 挂掉怎么办”? 二者答案是一样的。 50W 日活的产品,User 表加一个字段就“影响性能”了?这是你猜的还是已经做了 Profiling 了?做了把结果贴上来看看怎么回事儿,没做就先别自个儿猜。
首先Redis是支持持久化的,挂了数据也不会丢失; Redis也支持分布式,集群,真怕挂了就加机器,不过50W日活单机应该就够了。 如果考虑Mysql的话,频繁写入的数据最好是单建一张表,并根据需要加适当的锁,防止读写错误。