上文《秒杀抢红包实战系列(三)抢红包》我们演示了抢红包环节,在最后展示了查询抢到的红包记录。这里由于是演示,所以主要是把数据只存在了redis里面的。由于存储到redis也是使用的list,所以我们可以使用range函数给查询出来。
在真实的情况下这里的话一般都是缓存+数据库的方式进行查询。用起来还是比较方便的。
其实我们在这里演示的内容比较少,我们只记录了抢红包的记录,在真实的环境下,其实还有:
1、查询用户的账户 2、为用户的账户加钱 3、生成用户的账户流水记录 4、等等
反正真实情况是非常复杂的,所以这也是为什么我们在前面的抢红包记录中提到的这里需要异步。
像春晚抢红包的这种场景,一般系统都会对这种查询记录接口做降级,主要是由于春晚这么大的流量,抢红包的记录消费能力要足够强。数据库的压力主要都给到了写的压力。同时由于mysql的并发数没有redis大,会出现很大的延迟,造成很多的抢红包记录无法及时查询到,所以这里做降低不管是对体验还是系统的压力来说都是比较好的。
在我们前面的示例中,查询红包的接口是:/redpacket/records,如下图:
大家直接看源码即可。最后按照惯例,附上本案例的源码,登录后即可查看。
还没有评论,来说两句吧...