当前位置: 首页 > 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.xdnf.cn/news/1314091.html

相关文章:

  • 8.从零开始写LINUX内核——初始化中断控制芯片
  • 三、memblock 内存分配器
  • 《软件工程导论》实验报告五 设计建模工具的使用(一)类图
  • 《AI 与数据质量的深度碰撞:颠覆传统治理模式的变革》文章提纲
  • Java -- 泛型-自定义泛型
  • 《从入门到精通:Kafka核心原理全解析》
  • 中级统计师-会计学基础知识-第三章 会计凭证与会计账簿
  • ZYNQ QSPI控制器说明
  • OpenStack Neutron中的L2 Agent与L3 Agent:新手友好指南
  • Java 9 新特性及具体应用
  • InfluxDB 数据迁移工具:跨数据库同步方案(二)
  • 【笔记】动手学Ollma 第一章 Ollama介绍
  • 各种读取csv文件的工具性能比较
  • GEEPython-demo1:利用Sentinel-2监测北京奥林匹克森林公园2024年NDVI变化(附Python版)
  • 从零开始大模型之实现GPT模型
  • Spring Framework:Java 开发的基石与 Spring 生态的起点
  • RecSys:多目标模型和MMOE
  • Oracle数据库文件管理与空间问题解决指南
  • Reduce系列
  • GaussDB 数据库架构师修炼(十三)安全管理(3)-行级访问控制
  • 测试18种RAG技术,找出最优方案(四)
  • 用Pygame开发桌面小游戏:从入门到发布
  • 衡石使用指南嵌入式场景实践之仪表盘嵌入
  • 【FreeRTOS】队列集
  • 聊聊智慧这个东西之三:从食物的毒性、偏性聊起
  • 布隆过滤器的原理及使用
  • ubuntu网络共享
  • 银行间交易IMIX协议加密相关
  • JetPack系列教程(八):PDF库——让Android应用也能优雅“翻页”
  • androidstudio内存大小配置