1、redis中预扣减超卖问题

 哪些场景会导致超卖

1)查询库存>0,扣减库存两步不是原子操作,导致两次都扣减成功

解决方案:使用lua脚本,原子执行

2)客户端网络问题,重复发送请求,导致一个客户扣减两单

用activeId_userId为redis,key 执行时先setnx,如果成功,表示该用户之前没有买成功,否则直接返回之前扣减的订单号

3)redis主从复制延迟,写redis后立马查redis导致的库存超卖

可以在客户端强制读写主库

如果预扣减已经出现超卖如何处理

1、定期对账,比对数据库中库存和redis库存差异,如果差异小自动同步;如果差异大,可人工核对

2、支付扣款逻辑如何保证用户和商户账号扣减和新加强一致

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐