【Redis】Redisson实现分布式锁

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

官网地址
GitHub地址

Redisson入门

1.引入依赖

java 复制代码
<dependency>  
	<groupId>org.redisson</groupId>    
	<artifactId>redisson</artifactId>
	<version>3.13.6</version>
</dependency>

2.配置客户端

java 复制代码
@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.测试

java 复制代码
@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),重置超时时间
相关推荐
Java开发追求者2 分钟前
navicat连接新的数据库提示Oracle library is not loaded.
数据库·oracle·oracle11g·oracle library·is not loaded
砚底藏山河3 分钟前
存储选型实战:CSV-SQLite-MySQL同机基准(魔码量化实战 #02)
java·数据库·python·金融·maven
leo_messi943 分钟前
面试知识点梳理及相关面试题(十六)-- 分布式设计
分布式·面试·职场和发展
huaweichenai4 分钟前
spring boot 打包并部署到线上服务
java·数据库·spring boot
明志数科10 分钟前
具身智能数据工程观察:从集中式数采工厂到真实场景采集,数据供给路线正在转向
大数据·数据库·人工智能
天行健,君子而铎15 分钟前
数据分类分级的范式转换:从规则匹配到模型持续优化规模化前瞻算法
大数据·网络·数据库·安全·分类
云雀衔光16 分钟前
多个 MCP Server 怎么编排:数据库 / Redis / Git / 飞书一把梭
java·数据库·人工智能·redis·git·语言模型·飞书
bksczm40 分钟前
MySQL基础之数据类型
数据库·mysql
youm20031 小时前
【学习笔记】reids的数据类型
redis·笔记·学习
涛思数据(TDengine)1 小时前
存储成本降低80%,Zendure用TDengine支撑117万台设备的能源数据分析
大数据·数据库·人工智能·数据分析·时序数据库·tdengine·工业