系列文章目录

以下是专栏部分内容,更多内容请前往专栏查看!


SpringBoot结合Redisson实现分布式锁-LMLPHP


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • 专门为RabbitMQ入门打造的专栏,持续更新中。。。。。。。。链接>>>>>>>《图解RabbitMQ》

🌟引入依赖

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

🌟配置文件

spring:
  redis:
    host: ip
    password: 密码
    port: 端口号

🌟Redisson配置类

@Data
@Configuration
public class RedissonConfig {

    @Value("${spring.redis.host}")
    private String redisHost;

    @Value("${spring.redis.port}")
    private String redisPort;

    @Value("${spring.redis.password}")
    private String redisPassword;

    @Bean
    public RedissonClient redissonClient(){
        //创建配置
        Config config=new Config();
        config.useSingleServer()
                .setPassword(redisPassword)
                .setAddress("redis://"+redisHost+":"+redisPort)
                .setPingConnectionInterval(1000);
        //创建客户端
        RedissonClient redissonClient= Redisson.create(config);
        return redissonClient;
    }
}

🌟使用

String lockKey="user:coupon:"+couponId;
RLock lock = redissonClient.getLock(lockKey);
lock.lock();
try{
	//业务逻辑
}finally{
	lock.unlock
}

🌟注意事项

其加锁API有两个,一个是lock无任何参数;一个是要显式指明解锁时间。
看门狗机制:在redisson实例关闭前,不断的延长锁的有效期。

  1. 默认情况下,不显式设置锁过期时间,看门狗检查锁的超时时间是30秒;或者通过Config.lockWatchdogTimeout来进行指定。
  2. 如果显式的指定了锁过期时间,则无看门狗,并且无需手动释放锁。

🌟写在最后

有关于SpringBoot结合Redisson实现分布式锁到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


SpringBoot结合Redisson实现分布式锁-LMLPHP

10-04 12:38