美文网首页
分布式锁Redission分析

分布式锁Redission分析

作者: 听一首老歌 | 来源:发表于2018-12-14 16:25 被阅读0次

    Redission锁总结

    1,加锁机制

    为了实现原子操作,通过执行一段Lua脚本进行加锁。

    首先锁定key, 先判断key是否已经锁定,未锁定则通过hset语句进行锁定

    第一步 使用exist判断key是否存在

    第二步 hset 第一个参数是key,第二个参数是value,第三个参数是1 。表示创建一个散列key, field域的值是 1

    第三步 设置key过期时间

    第四步 使用hexists判断散列,field域的值是否为客户端id

    第五步 如果是,则filed域的值加一

    第六步 重新设置key过期时间

    2,互斥机制

    客户端2去加锁,

    通过第二条语句判断,如果散列field域不是客户端2,则返回pttl剩余的时间

    客户端2会进入一个while循环

    3, watch dog自动延期

    一个后台线程,发现客户端1还持有锁,会不断延长key的时间

    4, 可重入加锁机制

    第四步判断成功,则会通过hincrby增加域的值

    相关文章

      网友评论

          本文标题:分布式锁Redission分析

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