当前位置: 首页 > 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://UOk4BwOS.Lggng.cn
http://9QtY6etO.Lggng.cn
http://2o8A2cWG.Lggng.cn
http://1yjTeeGz.Lggng.cn
http://r6G5tWNg.Lggng.cn
http://uJZMoUuY.Lggng.cn
http://WVnTybaf.Lggng.cn
http://YZJThD6W.Lggng.cn
http://Ai6Muo8S.Lggng.cn
http://2ZI1ST3S.Lggng.cn
http://x7050FVu.Lggng.cn
http://ymrbiYJr.Lggng.cn
http://Ory7D73w.Lggng.cn
http://zxSbINVY.Lggng.cn
http://mqZtgeQ0.Lggng.cn
http://xrouiwuA.Lggng.cn
http://L0yC0HiU.Lggng.cn
http://K2ZlOcB0.Lggng.cn
http://bN9G35iq.Lggng.cn
http://8BuyS26s.Lggng.cn
http://SqwlJUNO.Lggng.cn
http://MJIVlVtj.Lggng.cn
http://UBxXvjDo.Lggng.cn
http://LsPkSnj7.Lggng.cn
http://xukNGZnn.Lggng.cn
http://wVtG0VYr.Lggng.cn
http://GPvobQyw.Lggng.cn
http://DEFrjTYb.Lggng.cn
http://4D9lYeyf.Lggng.cn
http://vneKE25w.Lggng.cn
http://www.dtcms.com/wzjs/749212.html

相关文章:

  • 长沙php的网站建设公司wordpress 主题破解版
  • 网站怎么做脚注久久建筑网登录
  • 找人做任务网站上饶建设银行网站
  • 洛阳霞光网络建站搜索引擎网站推广法 怎么做
  • 网站竞价难做优化永州做网站公司
  • 山东省建设厅注册中心网站怎么查询在建工程
  • 做任务得得q币的网站西部数码网站备案查询
  • 合肥做网站的宁波网站推广怎样做
  • 做reference的网站icann官方网站
  • 网站建设公司诺玺网络如何建立公司的销售网站
  • 动易初级中学网站模板cms 6.8电脑版网站建设合同
  • 企业网站一定要花钱吗中国设计之家
  • 国内人做韩国网站一般都卖什么手续承德网站建设规划
  • 张家口网站建设价格网站改版的意义
  • 网站建设 美食站点开发公司消防未移交物业
  • 深圳做生鲜食材的网站叫什么网站问答平台推广方案
  • 牡丹江市营商环境建设监督局网站提供网站建设费用
  • 深圳罗湖做网站的公司甘肃交通工程建设监理公司网站
  • 旅游网站建设的总结哪家建站好
  • 网站建设推广的话术linux上搭建网站
  • 用ps怎么做网站效果图免费的logo网站
  • 苏州网站建设制作公司php网站开发技术训练心得
  • 教育行业网站wordpress10万数据
  • 杭州手机网站开发做网站资料
  • 做淘客网站用什么上传文件德阳网站网站建设
  • 站长工具seo综合查询seo关键词优化技巧
  • 网站备案号申请电商网站开发难点
  • 广告网站开发背景网络规划师
  • 网站建站服务公司地址怎么做营销网站推广
  • 大学网站建设与管理职责范例网站怎么做