美文网首页
高并发的库存扣减,redis+lua脚本

高并发的库存扣减,redis+lua脚本

作者: youpd | 来源:发表于2021-07-31 12:52 被阅读0次
local key=KEYS[1];  ---key
local subNum = tonumber(ARGV[1]) ;  ---value
local surplusStock = tonumber(redis.call('get',key));   ---使用get命令获取key的value值  剩余库存
if (surplusStock<=0) then return 0    ---  剩余库存<=0  return  0
elseif (subNum > surplusStock) then  return 1  ---秒杀数量>剩余库存返回1
else
    redis.call('incrby', KEYS[1], -subNum)
    return 2  --- 扣减成功返回 2
end
private String subStock="local key=KEYS[1];\n" +
            "local subNum = tonumber(ARGV[1]) ;\n" +
            "local surplusStock = tonumber(redis.call('get',key));\n" +
            "if (surplusStock<=0) then return 0\n" +
            "elseif (subNum > surplusStock) then  return 1\n" +
            "else\n" +
            "    redis.call('incrby', KEYS[1], -subNum)\n" +
            "    return 2 \n" +
            "end";

    @Test
    public void test11(){
    //构建redisScript对象,构造方法参数1 执行的lua脚本   参数2 结果返回类型  
        DefaultRedisScript<Long> defaultRedisScript = new DefaultRedisScript<>(subStock,Long.class);
        //参数1 redisScript对象  参数2 keys,可以是多个,取决于你lua里的业务, 参数3 args 需要给lua传入的参数 也是多个  
        Long result = (Long) stringRedisTemplate.execute(defaultRedisScript, Arrays.asList("seckillStock:1594778100813"), "10");
        System.out.println(result);
    }

相关文章

  • 高并发的库存扣减,redis+lua脚本

  • 电商产品库存扣减逻辑

    解读库存扣减逻辑: 1.库存主要分 总库存 冻结库存 可用库存 2.库存在提交订单的时候增加冻结库存并扣减可用库存...

  • 幂等性-库存扣减

    如何在高并发场景下,库存扣减可能出现的数据不一致性问题。 示例: 如两个线程同时查询到库存num=5,其中一个线程...

  • 并发库存或额度扣减问题

    数据库 并发还达不到秒杀级别的情况下可以直接使用数据库扣减,商业版阿里云MYSQL的性能事实上也不是不能看。案例:...

  • 库存扣减

    此篇文章来自于京东大神开涛的微信公众号中的内容,感谢开涛大神,慢慢的干活,地址如下: https://mp.wei...

  • 分布式事务

    使用场景 例如: 电商下单 订单生成+扣减库存订单生成属于订单系统,扣减库存属于库存系统 db本地事务如何保证的?...

  • 高并发下库存扣减解决方案--分布式锁

    以下是个简单的库存扣减流程: 如果并发非常低的时候,基本就按这个流程走就行了。而这个设计,并发量稍大时,就会导致超...

  • go-zero基础组件-分布式锁RedisLock

    为什么需要分布式锁 用户下单 锁住uid,防止重复下单。 库存扣减 锁住库存,防止超卖。 余额扣减 锁住账户,防止...

  • 用 Go + Redis 实现分布式锁

    为什么需要分布式锁 用户下单 锁住 uid,防止重复下单。 库存扣减 锁住库存,防止超卖。 余额扣减 锁住账户,防...

  • 高并发场景下强一致预算/库存扣减方案

    场景描述 对于预算扣减/库存扣减类场景,我们需要根据业务对已有预算/库存做减法,拿发券的场景来举例: 需要满足不同...

网友评论

      本文标题:高并发的库存扣减,redis+lua脚本

      本文链接:https://www.haomeiwen.com/subject/agohvltx.html