Redis实现乐观锁+分布式事务


Redis实现乐观锁+分布式事务

项目做了负载后出现的问题优化

原始代码:

 

问题做了负载后,不同的服务持有不同的lockNumQueue并发量高的时候出现多个线程抢同一个号源,生成大量的失败订单。

优化后的代码:

 

通过spring data redis操作redis,将源代码中的lockNumQueue 放入redis,对列表的主键加锁,并对连接标记事务。事务提交后list不为空则成功,否则失败。

注意:连接使用完成后,调用RedisConnectionUtils.unbindConnection(redisTemplate.getConnectionFactory());释放连接,不释放连接可能过段时间会报错。

复现方式:使用线程池访问方法,如果访问的次数达到redis的最大连接数就会出现异常,JedisException: Could notget a resource from the pool


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM