有100万优惠券,怎么保证高并发情况下唯一发放

行走的旅程 发布于 01/12 01:25
阅读 1K+
收藏 0

一个用户只能获取一个优惠券,已经获取的用户再次获取返回已经拥有的优惠券

加载中
0
慕容狗蛋
慕容狗蛋

重庆十一选五_[官网首页]批量放到 Redis List,客户端从 Redis 里取一个删除一个,因为 Redis 是单线程的,不会重复获取。

python老王
python老王
太慢了
0
白天蓝草
白天蓝草

是不是把发放和领取搞混了?

发放是平台主动向目标用户派发。只有目标用户没有重复,就不会出现重复发放的问题。

领取是用户主动向平台获取。这种情况,只要对同一用户领取时上锁,保证固定的领取数量,就不会出现重复领取问题。额外的,还能减少避免发放出现的短时间的性能问题。

 

行走的旅程
行走的旅程
是领取,相当于用户抢优惠券的场景,一个用户最多只能抢到一个,抢到的用户再次点击抢优惠券只会显示之前的优惠券
0
idoz
idoz

重庆十一选五_[官网首页]你时要快速地发放(比如秒光),还是要求用相对平均的20天(比如说)缓慢地发放完成?如果是前者比较好解决, 如果是后者,相对来说比较难,可以借鉴bicoin挖矿。

0
zhaobohao
zhaobohao

重庆十一选五_[官网首页]参考snowflate算法。每禾少可并发生成不重复的id,26w个左右,让用户拿这个id去换优惠券即可。当然业务场景可以适当更改。例如加入限流,过滤、异步消息等。

兮若
兮若
所有的回答就你的靠谱
0
Beyond-Bit
Beyond-Bit

消息队列比较合适,谁先抢到就给谁。

0
Joyzhou
Joyzhou

领取并不存在并发的问题吧?

返回顶部
顶部

页面底部区域 foot.htm