-- 可能回滚的列表,一个记录要回滚的skuid一个记录库存 local id_list= {} local quantity_list= {} -- 调用放传递的keys 和 values execute(RedisScript script, List keys, Object... args) local keys = KEYS local values = ARGV; local function deduction(key,num) keys[1] = key; local value = redis.call("get",keys[1]) if not value then value = 0; end value = value + num -- 变更后库存数量小于 if(value<0) then -- 发生超卖 return false; end redis.call("set",keys[1],value) return true end local function rollback() for i,k in ipairs (id_list) do -- 还原库存 keys[1] = k; redis.call("incrby",keys[1],0-quantity_list[i]) end end local function execute() -- i 类java for循环 for(int i=0;i