Spring Boot 分布式锁的实现!

本文介绍了如何使用Spring Boot结合redisson实现分布式锁,通过添加依赖、配置信息、编写配置类和工具类,详细展示了加锁和解锁的过程。通过模拟并发测试,证明了加锁能有效避免值的乱序问题,对于理解分布式锁的工作原理有所帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

面试总是会被问到有没有用过分布式锁、redis 锁,大部分读者平时很少接触到,所以只能很无奈的回答 “没有”。本文通过 Spring Boot 整合 redisson 来实现分布式锁,并结合 demo 测试结果。

首先看下大佬总结的图

正文

添加依赖

 
  1. <!--redis-->

  2. <dependency>

    1. <groupId>org.springframework.boot</groupId>

    2. <artifactId>spring-boot-starter-data-redis</artifactId>

  3. </dependency>

  4. <!--redisson-->

  5. <dependency>

    1. <groupId>org.redisson</groupId>

    2. <artifactId>redisson-spring-boot-starter</artifactId>

    3. <version>3.10.6</version>

  6. </dependency>

 

配置信息

 
  1. spring:

  2. # redis

  3. redis:

  4. host: 47.103.5.190

  5. port: 6379

  6. jedis:

  7. pool:

  8. # 连接池最大连接数(使用负值表示没有限制)

  9. max-active: 100

  10. # 连接池中的最小空闲连接

  11. max-idle: 10

  12. # 连接池最大阻塞等待时间(使用负值表示没有限制)

  13. max-wait: -1

  14. # 连接超时时间(毫秒)

  15. timeout: 5000

  16. #默认是索引为0的数据库

  17. database: 0

 

配置类

 
  1. /**

  2. * redisson 配置,下面是单节点配置:

  3. *

  4. * @author gourd

  5. */

  6. @Configuration

  7. publicclassRedissonConfig{

  8. @Value("${spring.redis.host}")

  9. privateString host;

  10. @Value("${spring.redis.port}")

  11. privateString port;

  12. @Value("${spring.redis.password:}")

  13. privateString password;

  14.  

  15. @Bean

  16. publicRedissonClient redissonClient() {

  17. Config config = newConfig();

  18. //单节点

  19. config.useSingleServer().setAddress("redis://"+ host + ":"+ port);

  20. if(StringUtils.isEmpty(password)) {

  21. config.useSingleServer().setPassword(null);

  22. } else{

  23. config.useSingleServer().setPassword(password);

  24. }

  25. //添加主从配置

  26. // config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""});</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值