waitTime 等待时间。客户端尝试获取锁时最大等待时间,超过这个等待时间必然返回获取锁失败。
leaseTime 锁的租期。客户端可持有锁的时间,超过这个时间锁自动过期。
- 竞争锁的客户端执行Lua脚本获取锁,如果获取失败,则订阅解锁消息,并挂起线程。
- 持有锁的客户端执行Lua脚本解锁,删除锁的同时往解锁消息通道发送解锁指令,Redis会广播解锁消息到所有订阅者。
- 等待锁的客户端收到解锁消息或者线程挂起时间超过锁超时时间(leaseTime)时,客户端会重新尝试获取分布式锁,如果仍然获不到,则线程再度进入阻塞状态,等待下一次解锁消息(新的锁持有者释放锁)到达或者锁超时。
- 等待锁的客户端如果等待时间超出了最大可等待时间(waitTime),会直接返回锁获取失败。
- 无论成功还是失败,等待锁的客户端线程最后都会取消订阅解锁消息。
https://juejin.cn/post/7168802584684134413#heading-7
标签:Redisson,解锁,Redis,获取,等待时间,线程,客户端 From: https://www.cnblogs.com/DCFV/p/18433282