百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Redisson-分布式红锁(RedLock)(redisson分布式锁应用)

ztj100 2024-11-04 15:16 10 浏览 0 评论

基于Redis的Redisson红锁RedissonRedLock对象实现了Redlock介绍的加锁算法。该对象也可以用来将多个RLock对象关联为一个红锁,每个RLock对象实例可以来自于不同的Redisson实例。

Bash
RLock lock1 = redissonInstance1.getLock("lock1");
RLock lock2 = redissonInstance2.getLock("lock2");
RLock lock3 = redissonInstance3.getLock("lock3");
RedissonRedLock lock = new RedissonRedLock(lock1, lock2, lock3);
// 同时加锁:lock1 lock2 lock3
// 红锁在大部分节点上加锁成功就算成功。
lock.lock();
...
lock.unlock();

大家都知道,如果负责储存某些分布式锁的某些Redis节点宕机以后,而且这些锁正好处于锁住的状态时,这些锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改Config.lockWatchdogTimeout来另行指定。

另外Redisson还通过加锁的方法提供了leaseTime的参数来指定加锁的时间。超过这个时间后锁便自动解开了。

Bash
RedissonRedLock lock = new RedissonRedLock(lock1, lock2, lock3);
// 给lock1,lock2,lock3加锁,如果没有手动解开的话,10秒钟后将会自动解开
lock.lock(10, TimeUnit.SECONDS);
// 为加锁等待100秒时间,并在加锁成功10秒钟后自动解开
boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
...
lock.unlock();

相关推荐

MySQL的10种常用数据类型(列举mysql中常见的数据类型)

MySQL的数据类型常用的数据类型有:整型(xxxint)位类型(bit)...

大数据量惯用优化方法(大数据 量化)

优化人员工作时免不了要接触到大数据量的问题,下面就将平时收集的一些关于大数据量的优化方法整理记录一下,也是和大家一起共享哦。1.应尽量避免在where子句中对字段进行null值判断,否则将导致...

MYSQL有哪些数据类型(mysql数据类型主要包括)

整理下以便查阅,还想吐槽下:这头条怎么就不能给文章分类呢?整数类型...

MySQL 避坑指南之隐式数据类型转换

...

Qt实现表格树控件-自绘树节点虚线

一、开心一刻...

如何在Qt中实现图形打印?(小学一年级数学图形图片打印)

在Qt中,可以使用QPrinter类和QPainter类来实现图形的打印功能。以下是一个简单的示例,演示了如何在Qt中进行图形的打印:...

Qt组件库之桌面图标系统实现(qt组件库之桌面图标系统实现了)

先来看看实现效果之前效果都放在最后,是不是大家不看到最后就走了, ̄□ ̄||,所以打算以后就先放效果在写实现方法。...

QT实现抖动文字和滚动文字,附源码

前言不知道大家有没有发现今天的文章有什么不一样,哈哈,我自己胡拼乱凑弄了一个logo,好不好看就先不说了,最起码萌萌哒...当然这不是今天的重点,在做logo的时候,我原本想让文字动起来的,奈何技术有...

Qt 图形(QPainterPath)(qt图形界面教程)

简述QPainterPath类提供了一个容器,用于绘图操作,可以创建和重用图形形状。...

Qt在数据可视化项目实战:C++仪表板开发

Qt里面搞数据可视化,咱今儿就聊聊怎么用C++整一个漂亮的仪表盘。...

实战PyQt5: 152-QChart图表之日期时间坐标轴

在统计图表中,使用时间作为某一坐标轴的情况非常常见,比如,常见的一年间月度销售统计,财务统计等等。在QChart中提供了日期时间坐标轴QDateTimeAxis类可以方便地将日期和时间添加到图表的坐标...

我的Qt五子棋AI已连胜238局,不服的来战!

AlphaGo之父DemisHassabis曾指出...

Qt 自适应图片之scaled()函数详解

  如何在改变窗口组件的情况下改变窗口背景图片的大小,我们通常会使用Qt自带的scaled()函数;QImage、QPixmap等绘图设备类都提供scaled()函数。...

PyQt5界面美化(一)(pyqt5酷炫界面)

借助FittenCode插件进行PyQt5界面美化!例如从网上找到一张漂亮的UI示意图:接下来借助FittenCode插件一步一步实现如上图中的界面。首先我们先进行提问,它会给出一个大致框架的代码...

多线程Qt下的八条规则(qt多线程直接处理数据)

相信资深Qter都认识GiuseppeD’Angelo,这位有着二十多年Qt开发经验,Qt源码行数贡献的最多的开发者之一,同时也是Qt项目的审批者,所说话的份量不言而喻。原文作者:...

取消回复欢迎 发表评论: