local goodsExists=redis.call('EXISTS', KEYS[2]) if goodsExists == 0 then -- 产品不存在 return-1 end local goodsStockExists=redis.call('hexists', KEYS[2], 'stock') if goodsStockExists == 0 then -- 代表产品库存不存在 return-2 end --用户限购数量 local purchaseLimitExists=redis.call('hexists', KEYS[2], 'purchaseLimit') if purchaseLimitExists == 0 then -- 商品限购数量不存在 return-3 end --用户限购数量 local purchaseLimit=tonumber(redis.call('hget', KEYS[2], 'purchaseLimit')) --用户已经购买的数量 local purchasedNumber=redis.call('ZSCORE', KEYS[1], ARGV[1]) --购买数量不存在则默认为0 ifnot purchasedNumber then purchasedNumber = 0 end -- 用户现在要购买的数量 local nowPurchasedNumber = tonumber(ARGV[2]) -- 用户将要购买的总数量 local totalPurchaseNumber = nowPurchasedNumber+purchasedNumber if purchaseLimit < totalPurchaseNumber then -- 用户购买数量超过了限购数量 return-4 end local stock=tonumber(redis.call('hget', KEYS[2], 'stock')) if stock <= 0 then -- 库存为0 return1 end if stock < nowPurchasedNumber then -- 库存不足 return2 end