欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > SpringBoot整合redisson实现分布式锁

SpringBoot整合redisson实现分布式锁

2024/10/24 15:12:32 来源:https://blog.csdn.net/weixin_45810161/article/details/141159747  浏览:    关键词:SpringBoot整合redisson实现分布式锁

1.添加依赖

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version>
</dependency>

2.配置文件yml

没有配置密码会报错

  redis:database: 0timeout: 3000password: 123456host: 127.0.0.1port: 6379jedis:pool:max-wait: -1     #连接池最大阻塞等待时间(使用负值表示没有限制)max-active: 8    # 连接池最大连接数(使用负值表示没有限制)max-idle: 8      # 连接池中的最大空闲连接min-idle: 0      # 连接池中的最小空闲连接

3.配置文件config


import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** redisConfig配置类* @Author: 社会主义码农* @Date: 2024/08/13/10:46* @Description: good good study,day day up*/
@Configuration
public class RedissonConfig {@Value("${spring.redis.host}")private String host;@Value("${spring.redis.port}")private String port;@Value("${spring.redis.password:#{null}}")private String password;@Beanpublic RedissonClient redissonClient() {// 配置Config config = new Config();String redisAddress = String.format("redis://%s:%s", host, port);config.useSingleServer().setAddress(redisAddress).setRetryInterval(5000).setTimeout(10000).setConnectTimeout(10000);if (ToolUtil.isEmpty(password)) {config.useSingleServer().setPassword(password);}// 创建RedissonClient对象return Redisson.create(config);}
}

4.测试

 /*** redis分布式锁测试* @return*/@GetMapping("/redisSonTest")public String redisSonTest(){String key = "redisSon";RLock lock = null;try {//自带看门狗lock = redissonClient.getLock(key);//不带看门狗,parms:1:等待时间,2:锁时间,3.时间单位//boolean b1 = lock.tryLock(30, 10, TimeUnit.SECONDS);//带看门狗,parms:1等待时间,0:表示不等待,拿到就拿到,拿不到不等待,1:时间单位,因为自带看门狗,不需要锁时间boolean b = lock.tryLock(0, TimeUnit.SECONDS);if (b){System.out.println("抢到锁了,执行下一步");}else {System.out.println("没有抢到锁");return "没有抢到锁";}} catch (Exception e) {e.printStackTrace();} finally {if (lock != null && lock.isHeldByCurrentThread()){System.out.println("释放锁");lock.unlock();}}return "测试成功";}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com