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

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