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

网站做流量推广的方式贵州城乡住房建设网站

网站做流量推广的方式,贵州城乡住房建设网站,网站域名空间合同,郑州市城乡建设局一、Redisson分布式锁概述 1.1 分布式锁的意义 在分布式系统中#xff0c;多个节点可能同时访问共享资源#xff0c;导致数据不一致或竞态条件。分布式锁通过协调不同节点对共享资源的访问#xff0c;确保数据的一致性和并发访问的安全性。 1.2 Redisson分布式锁的优势 …一、Redisson分布式锁概述 1.1 分布式锁的意义 在分布式系统中多个节点可能同时访问共享资源导致数据不一致或竞态条件。分布式锁通过协调不同节点对共享资源的访问确保数据的一致性和并发访问的安全性。 1.2 Redisson分布式锁的优势 基于Redis实现Redis作为高性能的内存数据库提供了快速、稳定的存储服务为Redisson分布式锁提供了坚实的基础。丰富的APIRedisson提供了丰富的Java API使得分布式锁的使用更加简单、直观。自动续期机制Redisson的分布式锁支持自动续期避免了因业务处理时间过长导致的锁过期问题。可重入锁Redisson的分布式锁支持可重入特性即同一个线程可以多次获取同一把锁。 二、Redisson分布式锁的原理 2.1 锁的实现方式 Redisson分布式锁主要基于Redis的SETNXSet if Not Exists命令和DELDelete命令实现。SETNX命令尝试设置一个值如果该键不存在则设置成功并返回1否则返回0。DEL命令则用于删除一个键。 2.2 看门狗机制 Redisson通过看门狗Watch Dog机制来实现锁的自动续期。当一个没有 leaseTime线程获取锁后Redisson会立即启动一个后台的定时任务看门狗来定期检查锁的状态。看门狗的时间间隔通常是锁默认过期时间如30秒的三分之一即10秒。这意味着在锁的默认过期时间到达之前看门狗会至少检查两次锁的状态并在需要时自动续期。如果线程在锁的默认过期时间内完成了操作并释放了锁看门狗会检测到锁的释放并取消该定时任务避免不必要的资源消耗。看门狗机制只会针对没有设置 leaseTime 的锁设置了 leaseTime 的锁不会有看门狗机制会根据设置的过期时间自然过期。 2.3 锁的自动续期机制 当看门狗检测到锁即将过期即在当前锁的剩余时间小于看门狗的时间间隔时它会尝试自动续期。续期操作会延长锁的过期时间确保在锁还在使用的情况下其他线程无法获取到该锁。续期的时间长度通常是锁的默认过期时间如再次设置为30秒但也可以根据具体需求进行调整。 2.4 锁的释放 当一个线程完成临界区的操作后应当手动释放锁。在Redisson中这通常通过调用unlock()方法来完成。如果线程没有手动释放锁而是异常结束或被其他方式中断Redis的键空间通知功能可以确保锁在一段时间后自动释放。 三、Redisson 看门狗机制 3.1 参数说明 waitTime: 表示在尝试获取锁之前线程会等待多长时间。当waitTime设置为大于0的值时线程在尝试获取锁时会在指定的时间内等待。如果在这段时间内锁没有被获取到tryLock方法将返回false。 leaseTime: 表示锁的持有时间即锁在自动释放之前可以保持多久。 unit: 时间单位用于指定waitTime和leaseTime的时间单位。 3.2 举例几个常见的方法 RLock lock redissonClient.getLock(lockKey001);// 没设置leaseTime有看门狗机制lock.tryLock();// 实际调用的RedissonLock的tryLock(long waitTime, TimeUnit unit) // 没设置leaseTime有看门狗机制lock.tryLock(3, TimeUnit.SECONDS); // 实际调用的RedissonLock的lock(long leaseTime, TimeUnit unit)方法// 设置了leaseTime有看门狗机制lock.lock(10, TimeUnit.SECONDS);// 设置了leaseTime10s没有看门狗机制lock.tryLock(3,10, TimeUnit.SECONDS);3.3 tryLock() tryLock() 方法默认会有看门狗机制,因为没有设置过期时间默认是30s过期但是看门狗每10s续期一次每次续期都重新设置过期时间为30s。如果没有释放锁理论上会无限续期。 3.4 tryLock(long waitTime, TimeUnit unit) // 源码public boolean tryLock(long waitTime, TimeUnit unit) throws InterruptedException {return this.tryLock(waitTime, -1L, unit);}因为这个方法没有设置 leaseTime因此默认也是有看门狗机制的。默认是30s过期但是看门狗每10s续期一次每次续期都重新设置过期时间为30s。如果没有释放锁理论上会无限续期。 3.5 lock(long leaseTime, TimeUnit unit) 设置了 leaseTime 不会有看门狗机制 // 源码public void lock(long leaseTime, TimeUnit unit) {try {this.lockInterruptibly(leaseTime, unit);} catch (InterruptedException var5) {Thread.currentThread().interrupt();}}3.6 tryLock(long waitTime, long leaseTime, TimeUnit unit) 设置了 leaseTime 不会有看门狗机制 // 源码 public boolean tryLock(long waitTime, long leaseTime, TimeUnit unit) throws InterruptedException {long time unit.toMillis(waitTime);long current System.currentTimeMillis();........... }四、其他 4.1 看门狗生命周期 当一个没有设置leaseTime 的锁一创建 Redisson 就会生成一个对应的看门狗如果执行了unlock()则看门狗会一起销毁。不然会直到java进程终止重启、销毁才会消失。 4.2 看门狗是Redisson 生成的吗 是的看门狗机制是Redisson 后台启的一个定时任务不是Redis自带的。
http://www.ho-use.cn/article/10815489.html

相关文章:

  • 发帖那个网站好 做装修的成都网站建设 外包
  • 如何做视频类网站网络营销企业网站设计
  • 好的高端网站项目营销推广策划
  • 网站推广费用怎么做分录营销型网站设计官网
  • 设计师培训流程搜索引擎优化定义
  • 易语言如何建设网站银川兴庆建设局网站
  • 网站论坛模板成都工信部网站
  • 商务网站建设期末考试企业vi设计欣赏
  • 固原网站建设wordpress mysql储存
  • 免费网站无需下载直接观看网站建设结论及体会
  • 山西省消防总队建设工程备案网站兰州网站建设招聘
  • 智慧旅游网站开发与设计小程序开发制作
  • 基金公司网站建设昆明网站建设教学视频
  • 注册博客域名做视频网站会怎么样南京高端网站建设工作室
  • 艾睿网站建设中国114黄页网站宣传广告
  • 戴尔网站建设目标网站开发易语言
  • google网站打不开了wordpress 固定链接如何设置
  • 电视剧在线观看完整版免费网站wordpress qq相册插件
  • 电商网站排名中国建筑网官网招聘网
  • google搜索引擎优化上海网站seo排名
  • 网站建设项目的工期计划品牌设计logo
  • 建设网站思路中国建设银行国际互联网网站
  • 网站开发和合同装修公司哪家产品好
  • 微信优惠券网站怎么做的wordpress登录非常慢
  • 搭建织梦网站视频教程深圳做男装什么网站容易找工
  • 成都网站商城建设安居客二手房出售信息
  • 怪兽网站模板网站建设费用估计
  • 校本教研网站建设方案动画制作软件an
  • 临沂网站建设费用最好看免费观看高清大全电影网站
  • 网站设计欣赏国外商城网站建设是 什么软件