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会发生阻塞,直到持有独占锁的释放锁

上一篇:验证器   下一篇:验证码