- Redis 分布式锁
- lock
- unlock
- tryLock
- lockRead
Redis 分布式锁
redis分布式锁
基于 redis 和 swoole 我们实现了 redis 分布式锁,在现在docker,微服务成为主流下分布式锁也很重要;
方法 | 含义 |
---|---|
lock($key, $timeout = 500) | 加锁 |
unlock($key) | 解锁 |
tryLock($key) | 尝试加锁 |
lockRead($key, $timeout = 500) | 加只读锁 |
tryLockRead($key) | 尝试只读锁 |
注意加锁和解锁是成对出现的哦,别忘了解锁
为了防止特殊情况产生,产生死锁,默认我们任何锁都设置了过期时间10s,也就是任何锁定时间都不可以超过10s
lock
加锁操作。如果有其他进程持有锁(固有锁,只读锁都算),那这里将进入阻塞,直到持有锁的访问 unlock。timeout 超时时间,一定时间后如果还是没有获取到锁将返回 false加锁成功返回true加锁失败返回true
unlock
解锁成功返回true
tryLock
加锁操作。与lock方法不同的是,tryLock()不会阻塞,它会立即返回。
加锁成功返回true,此时可以修改共享变量。失败返回false,表示有其他人持有锁。
lockRead
只读加锁。在持有读锁的过程中,其他进程依然可以获得读锁,可以继续发生读操作但不能lock或tryLock,(会等待释放)这两个方法是获取独占锁,在独占锁加锁时,其他进程无法再进行任何加锁操作,包括读锁当另外一个进程获得了独占锁(调用lock/tryLock)时,lockRead会发生阻塞,直到持有独占锁的释放锁
上一篇:验证器 下一篇:验证码