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

Redisson实现分布式锁

Redisson简介

Reddison是一个基于Java的客户端,是一个在Redis基础上实现的分布式工具的集合。它不仅提供了一系列的分布式Java常用对象,还提供了很多分布式服务,其中就包含分布式锁

Redisson实现分布式锁步骤(简述)

  1. 通过RedissonClient获取RLock

  2. 然后使用RLock加锁

  3. 执行业务代码后,释放锁

采用配置类方式实现分布式锁

在任意地方注入RedissonClient即可使用锁

其中,tryLock中的参数:最大等待时间默认为-1,即不等待;锁自动释放时间为30s。

Redisson分布式锁核心机制

锁续期(Watchdog)

利用Watchdog,每隔一段时间,重置超时时间。

默认每10秒检查锁状态,若业务未完成则自动续期至30秒,避免因执行超时导致锁失效

可重入性

可重入性其实就是指同一个线程可以重复获取同一把锁的能力,避免线程因重复加锁而导致死锁。

通过Hash结构记录线程ID(field)重入次数(value),同一线程可重复加锁

加锁原子性

通过Lua脚本实现 exists + hexists + hincrby + expire 的原子操作,确保锁竞争时仅一个线程成功。 

获取锁的流程如下:

 释放锁的流程如下:

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

相关文章:

  • Redisson实现限流器详解:从原理到实践
  • HTML 入门教程:从零开始学习网页开发基础
  • 前端知识:浏览器工作原理与开发者工具知识笔记
  • WIN10系统优化篇(一)
  • Leetcode 02 java
  • IDEA报错“资源找不到”?重启就好了!!?
  • 使用Dify构建HR智能助理,深度集成大模型应用,赋能HR招聘管理全流程,dify相关工作流全开源。
  • 城市蓝影.
  • 服务注册nacos和OpenFerign(用于封装跨服务之间的调用方法)
  • kubernetes学习笔记(一)
  • 数据结构 双向链表(2)--双向链表的实现
  • 黄仁勋链博会演讲实录:脱掉皮衣,穿上唐装,中文开场
  • 完善评论发布功能
  • PHP面向对象编程:类与对象的基础概念与实践
  • 从0到1搭建Lazada账号矩阵:自养号测评的精细化养号全攻略
  • Linux 定时器应用示例
  • 功能测试和回归测试
  • C# WPF后台设置控件样式失效的解决方法
  • 【Vue】tailwindcss + ant-design-vue + vue-cropper 图片裁剪功能(解决遇到的坑)
  • 从规模到效率:大模型三大定律与Chinchilla定律详解
  • 实现通讯录人员选择
  • IKE学习笔记
  • Java强化:多线程及线程池
  • 从电子管到CPU
  • 基于MATLAB的决策树DT的数据分类预测方法应用
  • Android CameraX使用
  • [析]Deep reinforcement learning for drone navigation using sensor data
  • CClink IEF Basic设备数据 保存到MySQL数据库项目案例
  • 高德地图MCP服务使用案例
  • 解锁数据交换的魔法工具——Protocol Buffers