2021
09-09
09-09
解决线程并发redisson使用遇到的坑
线程并发redisson的坑背景因为业务上的一个购买需求,需要对库存进行行程保护,防止超卖的出现(我们不是电商公司),经过调研,最终选择使用Redission来进行控制。主要因为Redission丰富的API,开源框架,已经被广泛应用于实际生产环境。问题描述当我们使用Ression中Lock.lock()方法之后,如果存在线程并发常见情况下,会出现如下异常:java.lang.IllegalMonitorStateException:attempttounlocklock,notlockedbycurrentt...
继续阅读 >
一、引入问题在工作中,遇到的接口基本都是长这样的:如下为一个库存扣减的接口。从redis中获取库存数量,然后扣减一个数量问题这个接口在并发的情况下是有问题,可以用jmeter测试一下(用postman压力测试了一下,没有测出并发问题。网上有的博客说postman没法测试并发)jmeter设置:100个并发打印结果:问题很严重呀解决方案,优化如下:jmeter设置:101个并发,stock=100,则正确结果是应该会出现一次“扣减失败,库存不足”打印...