【Redis】Redisson实现分布式锁

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。
在这里插入图片描述
官网地址
GitHub地址

Redisson入门

1.引入依赖

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

2.配置客户端

@Configuration
public class RedisConfig {
    @Bean
    public RedissonClient redisClient() {
        // 配置类
        Config config = new Config();
        // 添加redis地址
        config.useSingleServer().setAddress("redis://xxx.xxx.xx.xx:6379").setPassword("xxx");
        return Redisson.create(config);
    }
}

3.测试

@SpringBootTest
public class RedissonTset {
    @Resource
    private RedissonClient redisClient;
    @Test
    void testRedisson() throws InterruptedException {
        RLock lock = redisClient.getLock("lock");
        // 分别为获取锁的最大等待时间, 锁自动等待时间
        boolean isLock = lock.tryLock(1, 10, TimeUnit.SECONDS);
        if (isLock) {
            try {
                System.out.println("执行业务");
            } finally {
                lock.unlock();
            }
        }
    }
}

Redis分布式锁原理

Redisson分布式锁原理:

  • 可重入:利用hash结构记录线程id和重入次数
  • 可重试:利用信号量和PubSub功能实现等待、唤醒,获取锁失败的重试机制
  • 超时续约:利用watchDog,每隔一段时间(releaseTime / 3),重置超时时间
    在这里插入图片描述

相关推荐

  1. Zookeeper实现分布式(Zk分布式

    2024-03-25 14:42:04       16 阅读
  2. Zookeeper实现分布式

    2024-03-25 14:42:04       24 阅读
  3. Redis实现分布式

    2024-03-25 14:42:04       23 阅读
  4. Mysql实现分布式

    2024-03-25 14:42:04       22 阅读
  5. Redis分布式实现

    2024-03-25 14:42:04       19 阅读
  6. Redisson 实现分布式

    2024-03-25 14:42:04       21 阅读
  7. Redis实现分布式

    2024-03-25 14:42:04       35 阅读
  8. 分布式实现

    2024-03-25 14:42:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 14:42:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 14:42:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 14:42:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 14:42:04       18 阅读

热门阅读

  1. css使用伪类选择器来选择特定模式的元素

    2024-03-25 14:42:04       19 阅读
  2. RabbitAdmin及 RabbitMQ 事件处理

    2024-03-25 14:42:04       20 阅读
  3. Ubuntu Desktop Server - user 用户与 root 用户切换

    2024-03-25 14:42:04       19 阅读
  4. 探秘ChatGPT:打造出色学术论文

    2024-03-25 14:42:04       21 阅读
  5. 【Linux系统编程】缓冲区

    2024-03-25 14:42:04       18 阅读
  6. DPDK系列之四十二DPDK应用网络编程之TCP编程

    2024-03-25 14:42:04       21 阅读
  7. Ubuntu修改自启动软件或程序

    2024-03-25 14:42:04       23 阅读
  8. 02-Pandas的方法介绍

    2024-03-25 14:42:04       17 阅读
  9. 三色标记算法

    2024-03-25 14:42:04       22 阅读
  10. 求最大回文质数

    2024-03-25 14:42:04       19 阅读
  11. CSS基础

    CSS基础

    2024-03-25 14:42:04      19 阅读