`

互联网应用开发如何确保资源不被重复占用

阅读更多

随便写下,记录一下思路,以免记忆丢失。。。。。。。。。。。。。。。。。。。 

 

 

最近在做项目中遇到这样一个场景:

优惠券模块:

      在创建优惠券时通过一个模板,创建相应数量优惠券,每张优惠券均提前生成一条优惠券数据。

用户领取优惠券首先是查询对应模板下所有优惠券默认取一张占用,但是在高并发情况下会出现多个用户占用同一张优惠券的情况,之前也没做过太多类似场景,没想到太好办法,解决过程中考虑过一下方案最终选定最后一种:

1、分布式锁:

  用户领取时 针对该模板加锁,占用锁用户处理完成其他用户才能处理。此种情况优惠获取锁没有顺序,可能会出现有的用户一直获取不到锁的情况。

2、添加排重表:

添加一张表以优惠券id为主键,用户领取时先把对应优惠券插入排重表成功则占用,失败说明已经被占用,也可以使用redis缓存来解决排重问题。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics