20211114 基于Redis实现分布式锁(使用Redisson框架)

原理图

img

Redis 相关的四种技术

  • Jedis
  • Lettuce( spring-boot-starter-data-redis 默认引入)
  • RedisTemplate
  • Redisson

简单使用

操作步骤

  1. pom.xml 添加依赖

    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson-spring-boot-starter</artifactId>
        <version>3.16.4</version>
    </dependency>
    
  2. application.properties 配置 Redis 连接信息

    spring.redis.host=localhost
    spring.redis.port=6379
    #spring.redis.password=
    
  3. 简单使用类

    import org.redisson.api.RLock;
    import org.redisson.api.RedissonClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class MyRedisLock {
        @Autowired
        private RedissonClient redissonClient;
    
        public void testLock() {
            RLock rLock = redissonClient.getLock("redisKey");
    
            try {
                rLock.lock();
    
                Thread.sleep(10000000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                if (rLock != null) {
                    rLock.unlock();
                }
            }
        }
    }
    
  4. Spring Boot 启动类

    @SpringBootApplication
    public class RedisLockApplication {
        public static void main(String[] args) {
            ConfigurableApplicationContext applicationContext = SpringApplication.run(RedisLockApplication.class);
            MyRedisLock myRedisLock = applicationContext.getBean(MyRedisLock.class);
    
            myRedisLock.testLock();
        }
    }
    

实现效果

img

锁的类型在 Redis 中是 Hash ,默认 TTL 是 30s ,当 TTL 到达 20s 时,会自动延期,TTL 重新回到 30s

参考资料

posted @   流星<。)#)))≦  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2019-11-14 20191114 Spring Boot官方文档学习(4.7)
点击右上角即可分享
微信分享提示