数量控制器 v2

数量控制器 v1

并发场景:客户端 A、B 同时访问数量控制器
问题 1:
A 先执行 incrby,然后 B 执行 set,数据不一致
问题 2:
假定限量 100,A、B 同时读到当前数量为 99,A、B 执行完 incrby 后,总量为 101,超限了
并发场景下数量控制

setnx = set not exists
先计算,后判断
并发请求,导致数据不一致问题
set 可能会出现覆盖
先判断,后计算,计算错误
流程图 抽奖
微信抢红包,金额随机分配逻辑
数量控制
商品抢购
抽奖
抢红包
v2方案截图
sssss
V2版本控制器
redis数量控制器版本v2
redis数量控制器版本
数量控制器应用场景
v2版本解决的问题
redis数量控制器版本2
改进两点,为何起到作用?
分别对应版本1中的两个并发场景
一旦incrby,那么setn不会重制,因为其必定已经执行了set
incrby提前,不会出现并发场景下,两个incrby导致数量超限的场景
解决并发超卖问题
setnx 检测是否存在
直接增加 之后判断是否超卖
get mycounter
set mycounter
incrby 1
先执行incrby判断是否超出,然后计数
redis数量控制器版本2
改进两点,为何起到作用?
分别对应版本1中的两个并发场景
一旦incrby,那么setn不会重制,因为其必定已经执行了set
incrby提前,不会出现并发场景下,两个incrby导致数量超限的场景
redis数量控制器版本2
改进两点
为何起到作用?
分别对应版本1中的两个并发场景
一旦incrby,那么setn不会重制,因为其必定已经执行了set
incrby提前,不会存在两个线程incrby超限的问题
redis数量控制器
抽奖数量控制流程
可能的问题有两个,都是由并发场景引出的
Redis数量控制器应用场景
秒杀商品库存控制
抽奖库存控制
抢红包总金额
v2流程图
严谨的使用
有问题的计数器