美文网首页
redis分布锁-redLock

redis分布锁-redLock

作者: Leslie_Lee | 来源:发表于2021-04-15 11:20 被阅读0次

    使用redession实现分布锁的过程

    假设有5个完全独立的redis主服务器

    1.获取当前时间戳

    2.client尝试按照顺序使用相同的key,value获取所有redis服务的锁,在获取锁的过程中的获取时间比锁过期时间短很多,这是为了不要过长时间等待已经关闭的redis服务。并且试着获取下一个redis实例。

    比如:TTL为5s,设置获取锁最多用1s,所以如果一秒内无法获取锁,就放弃获取这个锁,从而尝试获取下个锁

    3.client通过获取所有能获取的锁后的时间减去第一步的时间,这个时间差要小于TTL时间并且至少有3个redis实例成功获取锁,才算真正的获取锁成功

    4.如果成功获取锁,则锁的真正有效时间是 TTL减去第三步的时间差 的时间;比如:TTL 是5s,获取所有锁用了2s,则真正锁有效时间为3s(其实应该再减去时钟漂移);

    5.如果客户端由于某些原因获取锁失败,便会开始解锁所有redis实例;因为可能已经获取了小于3个锁,必须释放,否则影响其他client获取锁

    相关文章

      网友评论

          本文标题:redis分布锁-redLock

          本文链接:https://www.haomeiwen.com/subject/rjfdlltx.html