如何处理高并发发红包的场景?

问题描述

由于公司有答题发红包活动的需求,活动相当于是送红包,也不存在抢红包的概念。就是每日有一个限额,比如一万。对于发红包的业务来说,必须要用事务加上锁比较合适,但是看了网上的解决方案,大多是推荐用乐观锁,但是乐观锁存在有被驳回的情况。由于我们的需求是只要是答对就发红包,而题目基本就是送分题,所以导致发红包的量很大

问题出现的环境背景及自己尝试过哪些方法

最早没有用锁机制就会发现往往会超发几块钱,后面加了排它锁,发现数据库执行会边长,并发量一大就会导致阻塞。

阅读 4.3k
6 个回答

可以考虑将1万个红包的code写入redis。答对之后之前从redis取出数据,并发操作由redis保证

乐观锁会有驳回的情况,可以考虑使用重试解决。

按你描述的需求和场景,其实你只需要解决并发量大时的阻塞问题

如果允许红包延迟一会儿到账的话,可以考虑加个队列,异步去发红包即可

加个倒计时打开红包试试

redis原子操作,了解一下?

我也推荐使用redis来做这个红包发放的判断,可以很好的应对高并发的场景

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题