springboot-seckill icon indicating copy to clipboard operation
springboot-seckill copied to clipboard

重复下单redis中库存还是会减小

Open wangsenyan opened this issue 4 years ago • 4 comments

long stock = redisService.decr(GoodsKey.getGoodsStock, "" + goodsId);//10
        if (stock < 0) {
            afterPropertiesSet();
            long stock2 = redisService.decr(GoodsKey.getGoodsStock, "" + goodsId);//10
            if(stock2 < 0){
                localOverMap.put(goodsId, true);
                return Result.error(CodeMsg.SECKILL_OVER);
            }
        }
        //判断重复秒杀
        //如果重复秒杀,是否多次减库存?
        SeckillOrder order = orderService.getOrderByUserIdGoodsId(user.getId(), goodsId);
        if (order != null) {
            return Result.error(CodeMsg.REPEATE_SECKILL);
        }

预减库存后,如果是重复秒杀,redis中的库存量还是会减少,导致其他用户不能下单

wangsenyan avatar Jan 16 '21 10:01 wangsenyan

这个您试过了吗

zhuimengliujie avatar Feb 08 '21 01:02 zhuimengliujie

您的项目启动成功了吗

zhuimengliujie avatar Feb 08 '21 02:02 zhuimengliujie

这个重复判断,是不是应该要放到预减库存的前面?

q258523454 avatar Jun 21 '21 02:06 q258523454

我也觉得重复秒杀判断应该放到减库存前面

EricTownsChina avatar Nov 01 '21 16:11 EricTownsChina