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

深度剖析Redisson分布式锁项目实战

今天在练手项目中也是遇到了许多新的技术,其中我认为最深刻的还是Redisson分布式锁,这里我就结合一下我项目中用到Redisson分布式锁的代码来讲述一下Redisson分布式锁,希望可以帮助大家更深刻地理解这项技术。

在之前的文章中我已经讲过Redisson分布式锁的概念,这次我就结合项目代码深入讲述

首先给出项目代码:

(从第一个注解就能看出来好久不用,我连Aop面向切面编程都遗忘了😂)

首先,这个@MyLock注解是标记在需要加入分布式锁的方法上面,当一个线程需要执行这个方法时会被注解拦截进入切面类执行tryLock方法。

在这个tryLock方法中首先会调用锁工厂(lockFactory)创建锁对象,根据lockType和name,锁工厂可以找到你需要一个什么样的锁,从而生成一个RLock对象,而这里也是我认为的一个重难点,接下来的话要认真感受:这里的getLock方法中用lockHandlers通过locktype从锁工厂(MyLockFactory)中得到了创建这一类型锁的方式,再通过apply(name)方法传入name参数从而创建了新的RLock对象,重中之重来了这个RLock对象实际只是锁的代理对象

而这个锁的代理对象,知道自己的name,明确自己的type,也具备与Redis通信的能力,但是在此时的Redis中,并没有我们业务类中要用到的锁的键和值!!!

于是就有了第二步lock.tryLock(),这一步操作才是在连接Redis尝试获取业务类中需要的锁

在这一步操作中,会根据name在Redis中查找是否存在键为name字段的数据,如果存在,则说明锁被占用,当前线程会进入等待,如果不存在,则会创建一个键为name字段,值为Hash结构的数据,并返回true。

因为返回值为true,线程会进入try{}代码块中执行业务方法

http://www.dtcms.com/a/334801.html

相关文章:

  • redis存储原理与对象模型
  • 《A Practical Guide to Building Agents》文档学习
  • 数学建模:智能优化算法
  • PostgreSQL——事务处理与并发控制
  • CVE-2021-4300漏洞复现
  • 海康机器人3D相机的应用
  • ZKmall开源商城的数据校验之道:用规范守护业务基石
  • Vue 3与React内置组件全对比
  • 【lucene】SegmentInfos
  • 《Leetcode》-面试题-hot100-技巧
  • 科研工具的一些注意事项
  • 【minio】一、Linux本地部署MinIO
  • stringstream + getline()实现字符串分割
  • Java 10 新特性及具体应用
  • 二分查找。。
  • 【大语言模型 02】多头注意力深度剖析:为什么需要多个头
  • Python 类元编程(元类的特殊方法 __prepare__)
  • nflsoi 8.16 题解
  • 【数据结构】-2- 泛型
  • Python - 100天从新手到大师:第十一天常用数据结构之字符串
  • Java实现汉诺塔问题
  • AI Agents 2025年十大战略科技趋势
  • 【嵌入式C语言】六
  • .net印刷线路板进销存PCB材料ERP财务软件库存贸易生产企业管理系统
  • mit6.824 2024spring Lab1 MapReduce
  • 衡石使用指南嵌入式场景实践之仪表盘嵌入
  • 3 统一建模语言(UML)(上)
  • 力扣 hot100 Day75
  • 动手学深度学习(pytorch版):第三章节—线性神经网络(6) softmax回归的从零开始实现
  • 基于深度学习的老照片修复系统