用两个key控制领券
key1: MAX_SUCCESS_REQUEST_KEY: 控制请求的最大数, 默认请求成功, 每个请求进来都把key-value减一, 如果不成功就把这个1加回来. 让其他请求进来.
key2: REMAIN_STOCK: 剩余券的库存, 请求进来默认成功, 真正成功后会扣一下库存.
流程:
- 领券开始: 一小波请求进来-> 减请求量key, 去领券 -> 领成功了把库存减掉.
- 领取1秒后: 一大波请求进来 -> 请求量key减到0了, 库存量还有 -> 返回 “不好意思, 活动很疯狂, 稍后再试哦~”
- 领取5秒后: 一波请求进来 -> 请求量key减到0了, 库存量也没有了 -> 返回 “券已经领完了呢~”
效果:
解决了一大波请求进来去领券, 库存量先被减为0, 返回给前端全已经领完了, 但是过一会部分请求失败, 又可以领券的问题.