电商秒杀系统常见问题
·
1、redis中预扣减超卖问题
哪些场景会导致超卖
1)查询库存>0,扣减库存两步不是原子操作,导致两次都扣减成功
解决方案:使用lua脚本,原子执行
2)客户端网络问题,重复发送请求,导致一个客户扣减两单
用activeId_userId为redis,key 执行时先setnx,如果成功,表示该用户之前没有买成功,否则直接返回之前扣减的订单号
3)redis主从复制延迟,写redis后立马查redis导致的库存超卖
可以在客户端强制读写主库
如果预扣减已经出现超卖如何处理
1、定期对账,比对数据库中库存和redis库存差异,如果差异小自动同步;如果差异大,可人工核对
2、支付扣款逻辑如何保证用户和商户账号扣减和新加强一致
更多推荐




所有评论(0)