公司开发了一个直播软件,其中有一部分是抢红包的功能,这个功能是由我来做的,做一下记录,顺便分享下经验
技术难点
抢红包逻辑有个和普通的增删改查不同的点,就是抢红包的瞬间,并发量很高,这样就会出现一个问题,那就是脏数据的问题,在查询的时候,数据库里面还有奖品,往外取的时候就没有了,为了解决这个问题,首先想到的是加悲观锁,在一个用户查询到一个红包并且领取的过程中,其他用户不能进行干涉,虽然这样可以实现功能,但是性能太过低下,如何兼顾性能,同时又不产生错误的数据,是一个技术难点
技术难点解决思路
在主播购买红包成功以后,生成一个奖池,然后将奖池中每个礼物的 id 扔到一个队列里面,每次有人抢红包,就从队列里面取一条数据出来,队列使用的是 reids 中的 list
流程设计如下
数据库设计和代码实现因为商(zuo)业(zhe)机(tai)密(lan)的原因,就不贴了
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于