校园秒杀库存怎样扣,才不会超卖?
不要求展开全部微服务,只讲扣减这一步为什么必须是原子的。
答题思路
不要先查再扣。用一条带条件的更新,或在缓存里把判断和扣减放进同一次原子操作,失败就直接返回。
解析
面经里的标准追问是并发下的检查与扣减。数据库写法是 UPDATE stock SET left_count = left_count - 1 WHERE id = ? AND left_count > 0,看影响行数。同一用户再用唯一键挡住重复提交。
不要求展开全部微服务,只讲扣减这一步为什么必须是原子的。
不要先查再扣。用一条带条件的更新,或在缓存里把判断和扣减放进同一次原子操作,失败就直接返回。
面经里的标准追问是并发下的检查与扣减。数据库写法是 UPDATE stock SET left_count = left_count - 1 WHERE id = ? AND left_count > 0,看影响行数。同一用户再用唯一键挡住重复提交。