记录一次抢红包功能的实现过程

本贴最后更新于 1956 天前,其中的信息可能已经时异事殊

公司开发了一个直播软件,其中有一部分是抢红包的功能,这个功能是由我来做的,做一下记录,顺便分享下经验

技术难点

抢红包逻辑有个和普通的增删改查不同的点,就是抢红包的瞬间,并发量很高,这样就会出现一个问题,那就是脏数据的问题,在查询的时候,数据库里面还有奖品,往外取的时候就没有了,为了解决这个问题,首先想到的是加悲观锁,在一个用户查询到一个红包并且领取的过程中,其他用户不能进行干涉,虽然这样可以实现功能,但是性能太过低下,如何兼顾性能,同时又不产生错误的数据,是一个技术难点

技术难点解决思路

在主播购买红包成功以后,生成一个奖池,然后将奖池中每个礼物的 id 扔到一个队列里面,每次有人抢红包,就从队列里面取一条数据出来,队列使用的是 reids 中的 list

流程设计如下

抢红包流程.jpg
数据库设计和代码实现因为商(zuo)业(zhe)机(tai)密(lan)的原因,就不贴了

  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1792 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...