数据库
首页 > 数据库> > redisson分布式锁实践

redisson分布式锁实践

作者:互联网

分布式锁的作用

在单机场景下可以使用内置锁来实现进程同步,但在分布式场景下需要同步的进程可能位于不同节点上,就需要用到分布式锁, 可以保证在分布式部署的应用集群中,同一个方法在同一操作只能被一台机器上的一个线程执行。

简而言之分布式锁是解决分布式环境中同一个方法被客户端调用的一致性问题。

分布式锁的三种实现方式

  1. 基于数据库实现分布式锁;
  2. 基于缓存(Redis等)实现分布式锁;
  3. 基于Zookeeper实现分布式锁;

redis分布式锁Redisson解决方案

  模拟springCloud分布式环境中商品秒杀问题

  测试结果如下:

第一批测试
========不加redisson锁-测试20个用户同时购买2个节点上(各1000件)共2000件商品======== 第1次测试,一共购买2012个 第2次测试,一共购买2004个 第3次测试,一共购买2028个 第4次测试,一共购买2032个 第5次测试,一共购买2014个 第6次测试,一共购买2004个 第7次测试,一共购买2066个 第8次测试,一共购买2084个 第9次测试,一共购买2072个 第10次测试,一共购买2072个 ========加redisson锁-测试20个用户同时购买2个节点上(各1000件)共2000件商品======== 第1次测试,一共购买1986个 第2次测试,一共购买1996个 第3次测试,一共购买2000个 第4次测试,一共购买1974个 第5次测试,一共购买2000个 第6次测试,一共购买1992个 第7次测试,一共购买2000个 第8次测试,一共购买1992个 第9次测试,一共购买1976个 第10次测试,一共购买1990个 -------------------------------------------------------------------------- 第二批测试 ========不加redisson锁-测试20个用户同时购买2个节点上(各1000件)共2000件商品======== 第1次测试,一共购买2064个 第2次测试,一共购买2046个 第3次测试,一共购买2062个 第4次测试,一共购买2028个 第5次测试,一共购买2048个 第6次测试,一共购买2042个 第7次测试,一共购买2036个 第8次测试,一共购买2062个 第9次测试,一共购买2044个 第10次测试,一共购买2048个 ========加redisson锁-测试20个用户同时购买2个节点上(各1000件)共2000件商品======== 第1次测试,一共购买1978个 第2次测试,一共购买1990个 第3次测试,一共购买1944个 第4次测试,一共购买1974个 第5次测试,一共购买2000个 第6次测试,一共购买2000个 第7次测试,一共购买1952个 第8次测试,一共购买1956个 第9次测试,一共购买1966个 第10次测试,一共购买1996个

结论

  很明显不加锁出现了超卖现象,而加锁没有出现超卖问题。

分析

 

测试代码见https://gitee.com/zhangsike/springboot-learn仓库springboot-redisson项目

 

标签:redisson,实践,次测试,2000,一共,购买,节点,分布式
来源: https://www.cnblogs.com/zincredible/p/13558648.html