图解Redisson分布式锁源码可重入锁(下)
发布时间
阅读量:
阅读量
Redis可重入锁的核心实现流程——关于可重入锁的锁定机制
(1)同一线程多次获取锁——重入式加锁
接下来我们进一步分析用于执行锁定操作的脚本:

在首次执行加锁操作时,key尚未被创建,因此此时可以顺利将当前线程的相关信息存入key对应的hash数据结构中,从而表明该线程已成功获取锁。
然而当下是同一线程再次尝试对同一个key进行加锁操作,此时由于key已经存在,原先的条件自然不再成立,程序便会进入下一个if判断分支。
该分支的逻辑为:
hexists anyLock UUID:ThreadId
即用于确认当前key是否由当前线程所持有。由于是相同线程再次对同一key进行加锁操作,因此在hash数据结构中必然能找到对应记录,条件成立后将执行以下命令:
hincrby KEYS[1] ARGV[2] 1 即 hincrby anyLock UUID:ThreadId 1
这表示对anyLock这个key对应的hash数据结构中UUID:ThreadId字段的值增加1。
从:
anyLock {
UUID:ThreadId 1
全部评论 (0)
还没有任何评论哟~
