锁的原理

在Redisson中,使用key来作为是否上锁的标志,当通过getLock(String key)方法获得相应的锁之后,这个key即作为一个锁存储到Redis集群中,在接下来如果有其他的线程尝试获取名为key的锁时,便会向集群中进行查询,如果能够查到这个锁并发现相应的value的值不为0,则表示已经有其他线程申请了这个锁同时还没有释放,则当前线程进入阻塞,否则由当前线程获取这个锁并将value值加一,如果是可重入锁的话,则当前线程每获得一个自身线程的锁,就将value的值加一,而每释放一个锁则将value值减一,直到减至0,完全释放这个锁。因为底层是基于分布式的Redis集群,所以Redisson实现了分布式的锁机制。

redisson 的最基本的用法,

RLock lock = redisson.getLock(“lockName”);
try{
// 1. 最常见的使用方法
//lock.lock();
// 2. 支持过期解锁功能,10秒钟以后自动解锁, 无需调用unlock方法手动解锁
//lock.lock(10, TimeUnit.SECONDS);
// 3. 尝试加锁,最多等待2秒,上锁以后8秒自动解锁
boolean res = lock.tryLock(2, 8, TimeUnit.SECONDS);
if(res){ //成功
//处理业务
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
//释放锁
lock.unlock();
}

redisson分布式锁原理相关推荐

  1. 一文掌握Redisson分布式锁原理|干货推荐

    ReentrantLock 重入锁 在说 Redisson 之前我们先来说一下 JDK 可重入锁: ReentrantLock ReentrantLock 保证了 JVM 共享资源同一时刻只允许单个线 ...

  2. Redis进阶- Redisson分布式锁实现原理及源码解析

    文章目录 Pre 用法 Redisson分布式锁实现原理 Redisson分布式锁源码分析 redisson.getLock(lockKey) 的逻辑 redissonLock.lock()的逻辑 r ...

  3. Redisson实现分布式锁原理

    Redisson实现分布式锁原理 一.高效分布式锁 当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满足的一些条件,同时考虑如何高效的设计分布式锁,这里我认为以下几点是必须要考虑的. 1.互斥 ...

  4. Redisson 实现分布式锁原理

    Redisson实现分布式锁 有关Redisson作为实现分布式锁,总的分3大模块来讲. 1.Redisson实现分布式锁原理 2.Redisson实现分布式锁的源码解析 3.Redisson实现分布 ...

  5. Redisson分布式锁实战-2:解决wait_time之坑

    我们一起来分析一下原因,我们获取锁之后,我们只打印了一个日志,然后从配置文件里面拿到一个hour,然后就结束了,结束之后就来到finally里边,而这个时间并没有执行SQL语句,所以他的时间会非常非常 ...

  6. 年轻人,看看 Redisson 分布式锁—可重入锁吧!太重要了

    作者 | 李祥    责编 | 张文 来源 | 企鹅杏仁技术站(ID:xingren-tech) 引言 作为后端开发,对于所谓的线程安全.高并发等一系列名词肯定都不会陌生,相关的一些概念及技术框架是面 ...

  7. Redis实战——Redisson分布式锁

    目录 1 基于Redis中setnx方法的分布式锁的问题 2 Redisson 2.1 什么是Redisson 2.2 Redisson实现分布式锁快速入门 2.3 Redisson 可重入锁原理 什 ...

  8. redisson分布式锁,实战

    目录 什么时候用分布式锁? 分布式锁入门 超时设置 释放了不是自己加的锁 正确设置锁超时 加解锁代码位置有讲究 实现可重入锁 Redis Hash 可重入锁 主从架构带来的问题 什么是 Redlock ...

  9. Redis:Redisson分布式锁的使用(推荐使用)

    Redis:Redisson分布式锁的使用(生产环境下)(推荐使用) 关键词 基于NIO的Netty框架,生产环境使用分布式锁 redisson加锁:lua脚本加锁(其他客户端自旋) 自动延时机制:启 ...

最新文章

  1. 9-7NOIP模拟赛总结
  2. java web 哪些方法不能被从写_JAVA_WEB面试题
  3. 解读ASP.NET 5 MVC6系列(17):MVC中的其他新特性
  4. 计算机组成原理码质变换,计算机组成原理负数的8421码
  5. 雅礼集训 2017 Day1
  6. PHP之MVC项目实战(二)
  7. github操作笔记191021
  8. [转]Java5泛型的用法,T.class的获取和为擦拭法站台
  9. java 对象回收_如何处理JAVA大量对象回收问题?
  10. 【高校联合主办| SCI、EI 快检索】物联网,机器学习,网络安全,通信技术,算法,微芯片等计算机多主题征稿!...
  11. 如何在线伪造邮箱发件人,用任意邮箱发送邮件
  12. WebLogic的下载和安装
  13. FPGA:生成占空比可调的PWM波
  14. [转] 花6小时整理的网上最全的系统服务,想PF降到50以下的进,经典中的经典
  15. 如何用计算机作图并求斜率,简单斜率分析以及作图
  16. PS 2021锁死各项AI新技术!用起来比美图秀秀更简单,几个键搞定老照片修复、变妆、绘画风格转换...
  17. 无老师作文巨讲堂连载【2015年上半年全集】|托福作文满分必备
  18. Java 优惠券最优使用实现
  19. 利用指针写一份学生信息管理系统
  20. 独家专访比尔·盖茨实录:这些钱对我都是多余的(中英文)

热门文章

  1. 新一线城市年轻人漂流图鉴:逃离北上广深,很多人依旧感到迷茫
  2. 软件测试(三)黑盒测试框架笔记总结
  3. linux终端中超级用户用( )符号,Linux系统及应用-中国大学mooc-题库零氪
  4. 配置文件——节点machineKey的作用,强随机生成
  5. 龙珠训练营机器学习-LightGBM学习笔记
  6. 公开说说别人看不到_说说发了但别人看不到
  7. 我们眼中土的掉渣的白球鞋,却在法国成为时尚界的传奇
  8. 用Multisim对石英晶体振荡器进行仿真
  9. 网络设备操作系统(Linux .vs. vxWorks)
  10. win32实现类酷狗安装的进度条显示