当前位置: 首页 > wzjs >正文

网站建设公司 选中企动力公司wordpress营销主题

网站建设公司 选中企动力公司,wordpress营销主题,国外网站空间哪个好,凤岗本地网站分布式锁的核心功能其实就三个:加锁、解锁、设置锁超时 同时在了解分布式锁之前,也需要了解Redis的发布订阅功能。 Redis的发布订阅功能 具体的操作演示如下: 开启3个客户端,一个订阅了频道 **channel1** ,另外个订阅…

分布式锁的核心功能其实就三个:加锁、解锁、设置锁超时

同时在了解分布式锁之前,也需要了解Redis的发布订阅功能。

Redis的发布订阅功能

具体的操作演示如下:

         开启3个客户端,一个订阅了频道 **channel1** ,另外个订阅了频道 **channel1**,最后一个通过PUBLISH发送消息后,订阅的那个就能收到了,靠这种模式就能实现不同客户端之间的通信。 

Redisson分布式锁源码整体分析

RLock接口

       **RLock**是一个接口,具体的同步器需要实现该接口,当我们调用 `redisson.getLock()`时,程序会初始化一个默认的同步执行器**RedissonLock** 

1、commandExecutor :异步的Executor执行器,Redisson中所有的命令都是通过...Executor 执行的 ;

2、internalLockLeaseTime:等待获取锁时间,这里读的是配置类中默认定义的,时间为30秒;

3、pubSub:封装了发布订阅功能组件

 Redisson锁的执行流程

通过Redis的monitor监控Redis服务器的命令 

 1、不启动看门狗的加锁

这里只加锁,然后让主线程休眠,我们看下针对Redis做了什么操作

这里可以和《Redisson锁的执行流程》对应看一看。

这里可以看到Redisson的加锁实际上是一个Lua脚本+针对一个哈希类型的操作(hincrby命令)

2、不启动看门狗的加锁+解锁

这里可以看到:

这里可以看到Redisson的解锁实际上是一个Lua脚本(del操作)+publish发布的操作。

3、不启动看门狗的加锁+解锁(重入锁的情况)

 可以看到这里没有删除掉key,这里实现锁的可重入是利用一个计数,加锁一次就加1,解锁一次就减1。

4、启动看门狗的加锁 

 Redisson锁的执行流程+源码分析

跟踪lock方法进入源码

代码还是挺长的,不过流程也就两步:

**要么线程拿到锁返回成功;**

**要么没拿到锁并且等待时间还没过就继续循环拿锁(这里使用监听机制避免来优化了),同时监听锁是否被释放。**

以上的Lua脚本就比较清晰了:

1、当前key不存在:标识锁未被占用

2、使用hset写入一个hash类型的数据:其中,key为锁的名称、field为“Redisson客户端ID:线程id”,value=1

3、执行pexpire,设置失效时间

4、当前key存在:标识已经获取到了锁

5、hincrby新增field的value,并且重新设置超时时间。

6、最后都不满足:获取锁失败,返回锁的剩余超时时间。

**拿不到的话,就会返回锁的剩余过期时长,这个时长有什么作用呢???**

用Java的Semaphore信号量的tryAcquire方法来阻塞线程。

Semaphore信号量又是由谁控制呢,何时才能release呢。

这段代码的作用在于将当前线程的**threadId**添加到一个**AsyncSemaphore**中,并且设置一个redis的监听器,这个监听器是通过redis的发布、订阅功能实现的。

一旦监听器收到redis发来的消息,就从中获取与当前thread相关的,如果是锁被释放的消息,就立马通过操作 **Semaphore** (也就是调用**release**方法)来让刚才阻塞的地方释放。

看门狗线程续锁

io.netty.util.Timeout 使用

这个源码,就是一个定时器,每隔 10s 递归执行一次


文章转载自:

http://0Y6nvVlN.ysLLp.cn
http://rqVwKHVx.ysLLp.cn
http://qmm88YC9.ysLLp.cn
http://yXFc40zt.ysLLp.cn
http://T30uB2eT.ysLLp.cn
http://Aai38ed0.ysLLp.cn
http://YIcmLQs5.ysLLp.cn
http://1VtvqDbz.ysLLp.cn
http://iQZZHpbu.ysLLp.cn
http://rb8EiCcU.ysLLp.cn
http://3c9JmvWM.ysLLp.cn
http://lMagrywg.ysLLp.cn
http://oySO6PJ6.ysLLp.cn
http://g5YO75gV.ysLLp.cn
http://wQBrqX8M.ysLLp.cn
http://45vx1C6J.ysLLp.cn
http://vFj80FU9.ysLLp.cn
http://9P8Qdclg.ysLLp.cn
http://Fay2v4sU.ysLLp.cn
http://dXK8wtQW.ysLLp.cn
http://EwUd1BJr.ysLLp.cn
http://Apn21G3G.ysLLp.cn
http://0gchE7M3.ysLLp.cn
http://CoM4XTNd.ysLLp.cn
http://DZva6815.ysLLp.cn
http://HQBUGIeH.ysLLp.cn
http://vKZ72EBP.ysLLp.cn
http://biSq0et0.ysLLp.cn
http://IqiMqduj.ysLLp.cn
http://vKuwfapI.ysLLp.cn
http://www.dtcms.com/wzjs/687208.html

相关文章:

  • 商品网站怎么做的网站页面优化分析
  • 网站开发专员招聘友情链接平台网站
  • 做前端常用的网站及软件下载舟山网站建设制作
  • 推广普通话主题手抄报图片大全快速seo软件
  • 家装设计网站怎么做衡水网站建设与制作
  • 响应式网站建设有利于seo品牌建设的三大理论
  • 宁波网站推广外包服务app开发者需要更新此app怎么解决
  • 网页设计的网网页设计的网站dw做网站需要数据库么
  • 表白网页生成制作网站标题的优化
  • 国外网站无法访问广告创意设计培训
  • 网站建设与管理论文阿里巴巴国际平台
  • 做网站是用什么软件广东深圳华强北
  • 西宁网站建设 哪家好wordpress 主题演示站
  • 国际网站后缀网站备案注意
  • 中国房产网济南网站优化的周期
  • 海口哪里做网站杭州市建筑业协会官网
  • 网站首页作用西安网页设计工资
  • 青岛建手机网站哪家好文创产品设计作品图片
  • 网站提交wordpress改造成mip站
  • 外贸家具网站首页设计泰兴网站推广
  • 做网站的目的和意义洛阳建设网站制作
  • 如何做网站逻辑结构图网站备案和不备案的区别
  • 门户网站的细分模式有网站怎么盈利
  • 乐山网站公众号建设html用什么编译器编写
  • 简述网站的制作流程网站底部版权代码
  • 易语言如何做网站北京注册工作室代理公司
  • 做网站简历怎么写办公软件开发
  • 天津网站制作的公司网站建设推广费怎么做账
  • 网站 框架网页建设手机免费制作网站
  • 网站上传用什么软件做视频福州网站建设营销方案