1 什么是分布式锁
多个程序之间,只有一个程序在并发情况下可以获取到锁,其它程序无法获取
2 锁行为抽象
借鉴Java Lock的抽象,大致有三种方法可以进行借鉴
获取锁,如果锁已经被其它线程获取,则进行线程等待
void lock();
释放锁
void unlock();
获取锁,但是相当于lock来说,不会直接进入等待,而是将处理权交给了开发人员
boolean tryLock();
3 分布式锁行为抽象
3.1 lock
lock 方法的定义是如果获取不到锁,则进入等待。一直等待到获取到锁为止,这个的抽象行为
在分布式锁中是不建议使用的,所以分布式锁的行为抽象抛弃了这个特性
3.2 tryLock
boolean tryLock();
tryLock方法尝试去获取锁,会同步返回获取结果,即使未获取成功,线程也不会进入阻塞状态
分布式锁获取的实现基于此特性实现
3.3 unlock
unlock 方式是释放锁的,分布式锁会基于此特性进行实现
4 Redis具体实现技术栈
4.1 未能及时释放锁的情况
我个人认为未能及时释放锁和死锁是两个概念,未能及时释放锁可