【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),重置超时时间
相关推荐
赵渝强老师30 分钟前
【赵渝强老师】openGauss的数据库
数据库·opengauss·国产数据库·高斯数据库
HackTwoHub37 分钟前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
l1t1 小时前
DuckDB对group by cube / rollup / groupping sets查询的优化
数据库·duckdb
Database_Cool_1 小时前
什么是湖仓一体?和数据仓库的本质区别(附 AnalyticDB MySQL 湖仓一体方案)
数据库·数据仓库·mysql
l1t2 小时前
DeepSeek总结的MariaDB 的 DuckDB 存储引擎
数据库·mariadb
tiancaijiben2 小时前
阿里云VMware服务完全对接指南:从环境准备到混合云生产级应用
数据库
Curvatureflight3 小时前
MySQL 深分页越来越慢?从 LIMIT OFFSET 改成游标分页
数据库·oracle
XZ-0700013 小时前
MySQL事务
数据库·mysql·oracle
tiancaijiben3 小时前
阿里云函数计算FC如何实现网站的定时任务与自动化
数据库·oracle·dba
xfhuangfu3 小时前
Oracle 19c 多租户体系架构介绍
数据库·oracle·架构