当 Redisson 中拿到锁的节点突然宕机时,不会发生死锁。 简单来说:看门狗(WatchDog)会随着节点的宕机而“死亡”,锁会在默认的 30 秒(或剩余的过期时间)后由 Redis 自动释放,其他等待的节点可以正常获取到锁。 以下是详细的运作过程和底层原理: 1. 看门狗的本质 很多开发者误以为看门狗是 Redis 服务端的功能,其实不然。看门狗是 Redisson 客户端(运行在你的业务 Java 进程中)的一个后台定时任务(底层基于 Netty 的时间轮 实现)。 当你的应用不指定锁的超时时间去获取锁时(例如直接调用 ),Redisson 会默认给这个锁设置一个 30 秒(,可配置)的过期时间(TTL)。 同时,客户端内会启动一个看门狗定时任务,每隔 10秒(30秒的 1/3)去 Redis 执行一次 Lua 脚本,把这个锁的过期时间重新重置为 30 秒。这就叫“自动续期”。 2. 节点宕机后的发生流程 如果拿到锁的节点(JVM 进程)突然宕机(断电、进程被强杀、OOM 等),会发生以下事情: 1. 客户端进程销毁:业务节点宕机,意味着运行在其中的 JVM 进程结束。 ...