网络视频直播系统中,关于发红包功能并发问题的处理教程

随着直播行业的火爆发展,各种直播平台涌现出来。为了提高平台人气,活跃直播间内气氛,各大网络视频直播系统中都纷纷加入了各项功能,比如:送礼物、发弹幕、抢红包、连麦、主播PK等等,在这些功能中,抢红包功能相对比较特殊,因为它对并发处理的要求比较高。
一、一般的处理过程
首先把红包分配好,存储到数据库里,然后在当前用户进行抢红包操作的时候,网络视频直播系统会先从数据库中进行发红包的记录查询,查到记录后把记录从数据库中删除,避免金额数目混乱,最后系统自动处理用户抢红包成功后的业务操作。
二、眼下的现实情况
如果用户是依次进行抢红包操作的话,以上业务逻辑是完全不会有问题的,但现实情况中,用户是不会依次进行抢红包操作的。那么抢红包的并发问题就成了大问题。
在并发的情况下,上述的流程就会出现一个问题:多个用户会抢到同一个红包记录,最终会出现用户抢到的红包数量和红包总金额超出发红包时的总金额。如此一来,网络视频直播系统如何保证抢到红包的用户数量和红包总和的准确性就成了关键。
三、问题的解决方法
解决抢红包时产生的并发问题可以用Redis来实现,Redis 提供了一个队列的存储方式,并可以通过冒泡的方式把存储的数据依次取出。具体实现过程如下:
发红包的时候:

/*指定红包的存储key*/
$key2='red_list_'.$redid;
/* 通过红包数量分配红包金额 */
    	$red_list=$this->redlist($coin,$nums,$type);
/* 将分配好的红包存入缓存 */
    	foreach($red_list as $k=>$v){
            DI()->redis->rPush($ke
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值