Redission实现分布式锁的原理
Redission实现分布式锁的原理
重点:
- 锁的获取:使用Lua脚本,利用exists+hexists+hincryby命令来保证只有一个线程能获取到锁。同时,通过pexpire命令为锁设置过期时间,防止死锁
- 锁的续期:看门狗,自动实现所得续期功能,1/3的过期时间为续期时间
- 锁的释放:通过Lua脚本,利用hexists+del确保只有持有锁的线程才能释放锁,防止误释放锁。同时利用publish命令,广播唤醒其他等待的线程
- 可重入锁:持有锁的线程可以多次获取同一把锁而不会被阻塞。具体是利用了Redis的hash结构。hash中key为线程id,如果重入则value+1,释放则value-1,减到0则为释放,进行del操作
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 花海!
