redisson分布式锁实践总结

Redisson 分布式锁的核心优势

特性 说明
可重入 同一线程可多次获取同一把锁
自动续期(Watchdog) 锁快到期时自动延长,防止业务未完成就被释放
防死锁 设置自动过期时间
高可用 支持 Redis 集群、哨兵、主从
公平锁 / 非公平锁 getFairLock() 支持排队
联锁(MultiLock) 跨多个 Redis 节点加锁

锁类型(按需选择)

// 可重入锁

RLock lock = redissonClient.getLock("myLock");

// 公平锁(按申请顺序获取锁)

RLock fairLock = redissonClient.getFairLock("myFairLock");

// 读写锁

RReadWriteLock rwLock = redissonClient.getReadWriteLock("myRWLock");

RLock readLock = rwLock.readLock();

RLock writeLock = rwLock.writeLock();

// 信号量(限流)

RSemaphore semaphore = redissonClient.getSemaphore("mySemaphore");

semaphore.acquire(); // 获取一个许可

semaphore.release(); // 释放

// 闭锁(CountDownLatch)

RCountDownLatch latch = redissonClient.getCountDownLatch("myLatch");

latch.await(); // 等待

latch.countDown(); // 减 1

最佳实践建议

  1. 锁粒度要小:不要锁整个方法,只锁关键代码段
  2. 设置合理的超时时间:避免长时间占用
  3. 使用 tryLock 非阻塞方式:提升用户体验
  4. 锁 key 设计合理 :如 "lock:order:create:" + userId
  5. 避免死锁:finally 中确保 unlock
  6. 监控锁状态:可用于排查问题

总结

需求 推荐方案
分布式环境下互斥访问 ✅ Redisson + Redis
简单场景 自定义 Redis SETNX + Lua(不推荐手动实现)
高可靠 ZooKeeper(CP 模型)
易用性 + 功能丰富 Redisson 是首选
相关推荐
山上春6 分钟前
Odoo 分布式单体与微服务模式深度对比研究报告
分布式·微服务·架构
左灯右行的爱情9 分钟前
Kafka专辑 : 生产者写入路径
分布式·kafka·linq
java1234_小锋34 分钟前
Zookeeper集群数据是如何同步的?
分布式·zookeeper·云原生
左灯右行的爱情2 小时前
Kafka专辑: 日志存储模型
分布式·kafka·linq
LB21122 小时前
Kafka笔记
分布式·kafka·linq
想你依然心痛3 小时前
Spark大数据分析与实战笔记(第六章 Kafka分布式发布订阅消息系统-02)
笔记·分布式·spark
胡萝卜的兔4 小时前
go-zero rpc 分布式 微服务
分布式·rpc·golang
小股虫21 小时前
分布式事务:在增长中台,我们如何做到“发出去的内容”和“记录的数据”不打架?
分布式·微服务·云原生·架构·团队建设·方法论
是三好21 小时前
分布式事务seata
java·分布式·seata
optimistic_chen21 小时前
【Redis 系列】常用数据结构---Hash类型
linux·数据结构·redis·分布式·哈希算法