美文网首页
redis分布式锁原理

redis分布式锁原理

作者: 垂直居中的句号 | 来源:发表于2021-05-31 22:07 被阅读0次

setnx  如果不存在就set,value为currenttime+timeout  成功返回1,不成功返回0。

成功后获取锁,expire设置过期时间。

执行业务

释放锁。

不成功获取锁失败,get(lockkey)  ,比较当前时间,和lockvalue,如果大于,这说明之前持有锁已过期,否则,锁依然存在。

锁过期,执行getset(lockkey),返回之前的值oldlockvalue,比较oldlockvalue=null说明锁已释放,oldlockvalue=lockvalue,相等说明没有其他线程获取锁,则可以得到锁,否则有其他线程占用锁。

zookeeper分布式锁

先创建一个锁目录

线程a要获取锁先在目录下按顺序创建一个节点

获取目录下所有子节点,找到比自己小的节点 ,不存在则获取锁。

线程B则创建节点后再判断自己是不是最小的,然后监听子节点

线程a释放锁后,删除自己的节点,b监听到后判断自己是不是子节点,获得锁。

相关文章

网友评论

      本文标题:redis分布式锁原理

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