【八股】Redisson分布式锁

Redisson分布式锁

主要了解了Redisson分布式锁实现的三个功能:
1.可重入 -> 防止死锁
2.可重试(i.e. 非阻塞获取锁)
3.自动续约

1. 可重入

原理:
利用Redis的Hash结构,记录了使用当前锁的线程id和重用次数,避免了可能造成的死锁问题。
存储的锁的内容如下图所示:
在这里插入图片描述

2. 可重试

不会一直去重试获取锁造成cpu资源的浪费 ,而是通过pubsub还有信号量的机制,实现了只有当别的线程释放锁,才会唤醒当前未成功获取锁的线程继续去尝试获取锁,
Redis的pubsub机制:在这里插入图片描述

信号量:
在这里插入图片描述

3. 自动续约 (看门狗机制)

只有当我们不指定leaseTime,也就是不指定持有锁的时间长度时,才会启动看门狗机制。如下图所示:
在这里插入图片描述

默认的看门狗机制时把持有锁的剩余时长指定为30秒,然后每过leaseTime的1/3,默认就是10秒,就会重置持有锁的剩余时长为30秒。我们也可以修改Redisson的配置,把默认持有锁时长30s改成自己想要的时长。

看门狗机制的实现如下:
在这里插入图片描述
有个方法(renewExpiration)会启用一个延迟任务,每次过了 1/3 leastTime时就会重置持有锁的TTL,重置完只有然后再调用自己,就实现了不断给锁续约的效果。

参考文章:

redisson中的看门狗机制总结

相关推荐

  1. Redis - 分布式Redisson

    2024-04-26 00:30:04       35 阅读
  2. SpringBoot+Redisson分布式

    2024-04-26 00:30:04       29 阅读
  3. SpringBoot+Redisson分布式

    2024-04-26 00:30:04       41 阅读
  4. Redisson分布式

    2024-04-26 00:30:04       28 阅读
  5. redisson分布式

    2024-04-26 00:30:04       21 阅读
  6. Redisson 实现分布式

    2024-04-26 00:30:04       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 00:30:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 00:30:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 00:30:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 00:30:04       20 阅读

热门阅读

  1. 智能合约语言(eDSL)—— 并行化方案

    2024-04-26 00:30:04       13 阅读
  2. Leetcode 150:逆波兰表达式求值

    2024-04-26 00:30:04       9 阅读
  3. CDN的原理

    2024-04-26 00:30:04       11 阅读
  4. 低空经济和无人机

    2024-04-26 00:30:04       8 阅读
  5. MySQL中CHANGE REPLICATION FILTER 语句详解

    2024-04-26 00:30:04       10 阅读
  6. Eclipse debug时有几个常用的快捷键非常实用

    2024-04-26 00:30:04       12 阅读
  7. 代码随想录算法训练营day45

    2024-04-26 00:30:04       9 阅读
  8. C语言中的逻辑运算

    2024-04-26 00:30:04       7 阅读