使用 Redisson 分布式锁时,很多人第一次听到“锁续期”会有点抽象。它的核心作用其实很简单:当业务执行时间超过初始锁时长时,客户端自动延长锁的过期时间,避免任务还没跑完锁就提前失效。
为什么会需要锁续期
如果你只给锁固定 10 秒,但实际任务有时要跑 30 秒,那么锁一旦提前过期,其他节点就可能再次拿到同一把锁,导致重复执行。续期机制就是为了解决这种长任务场景。
它适合处理耗时不可完全预估的任务
例如生成报表、批量同步、支付状态补偿这类任务,执行时长可能会波动。只靠手动估算锁时长往往不稳,而自动续期可以在任务仍持有锁时持续保活。
理解代码时先抓住加锁和释放两个点
RLock lock = redissonClient.getLock("order:sync");
lock.lock();
try {
syncOrderStatus();
} finally {
lock.unlock();
}
像这种不显式传入固定过期时间的写法,Redisson 会在持锁期间自动续期;真正要关注的是业务是否一定会在 finally 里释放锁,以及异常时是否会留下悬挂状态。
续期不是放弃超时控制
如果任务可能卡死,仍然要配合超时、幂等和告警来兜底。自动续期解决的是“正常长任务”的锁失效问题,不是替代所有并发控制设计。
结论
Redisson 锁续期可以理解成“任务还在跑,锁就别提前过期”。把它放到长耗时任务和重复执行风险里看,最容易明白它的价值。
正文完




