news 2026/10/22 2:20:26

95 跨进程抢资源怎么锁?这个Java Redis分布式锁工具类有8个方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
95 跨进程抢资源怎么锁?这个Java Redis分布式锁工具类有8个方法

📌人工智能: 「AI大模型」AI数据分析助手保姆级文档

📋 目录

  • 一、工具类功能
  • 二、所需环境
  • 三、方法与调用示例(按需调用)
  • 四、工具类源码(可直接复制)

一、工具类功能

加锁走SET key token NX PX,释放与续期用「先比对 token 再动作」的 Lua 脚本,用于跨进程抢同一份资源的互斥,依赖 Spring Data Redis,锁不可重入。

二、所需环境

JDK 17或以上 + Spring Boot 3.x或以上

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency>

三、方法与调用示例(按需调用)

🔢方法序号:1

🎯方法用途:

🧩方法定义:public RedisLockUtils(RedisTemplate<String, String> redisTemplate)

🗣️入参解释:public RedisLockUtils(Redis 模板)

📤返回值解释:RedisLockUtils,绑定在该模板上的锁组件

💡边界口径:

🧪方法示例:


🔢方法序号:2

🎯方法用途:

🧩方法定义:public Optional<String> tryLock(String key, Duration lease)

🗣️入参解释:public Optional<String> tryLock(锁键, 持锁时长)

📤返回值解释:Optional<String>,抢到锁时是本次凭证,抢不到时为Optional.empty()

💡边界口径:

🧪方法示例:


🔢方法序号:3

🎯方法用途:

🧩方法定义:public Optional<String> tryLock(String key, Duration lease, Duration maxWait, Duration spinMillis)

🗣️入参解释:public Optional<String> tryLock(锁键, 持锁时长, 最长等待, 重试基准间隔)

📤返回值解释:Optional<String>,等到锁时是凭证,超时或被中断为空

💡边界口径:

🧪方法示例:


🔢方法序号:4

🎯方法用途:

🧩方法定义:public boolean unlock(String key, String token)

🗣️入参解释:public boolean unlock(锁键, 加锁时返回的凭证)

📤返回值解释:boolean,删掉了自己这把锁为true

💡边界口径:

🧪方法示例:


🔢方法序号:5

🎯方法用途:

🧩方法定义:public boolean renew(String key, String token, Duration lease)

🗣️入参解释:public boolean renew(锁键, 凭证, 新的持锁时长)

📤返回值解释:boolean,续期成功为true

💡边界口径:

🧪方法示例:


🔢方法序号:6

🎯方法用途:

🧩方法定义:public <T> T executeWithLock(String key, Duration lease, Supplier<T> action)

🗣️入参解释:public <T> T executeWithLock(锁键, 持锁时长, 有返回值的业务)

📤返回值解释:T,业务自己的返回值

💡边界口径:

🧪方法示例:


🔢方法序号:7

🎯方法用途:

🧩方法定义:public void executeWithLock(String key, Duration lease, Runnable action)

🗣️入参解释:public void executeWithLock(锁键, 持锁时长, 无返回值的业务)

📤返回值解释:void,业务自己通过副作用交付结果

💡边界口径:

🧪方法示例:


🔢方法序号:8

🎯方法用途:

🧩方法定义:public <T> T executeWithLock(String key, Duration lease, Duration maxWait, Duration spinMillis, Supplier<T> action)

🗣️入参解释:public <T> T executeWithLock(锁键, 持锁时长, 最长等待, 重试基准间隔, 有返回值的业务)

📤返回值解释:T,业务自己的返回值

💡边界口径:

🧪方法示例:

四、工具类源码(可直接复制)

📦本工具类源码:95-Redis分布式锁工具类

📦 需要「Java企业级工具类全家桶(1-100)」点点关注点点赞,回复「java工具类」可领取100个工具类的完整源码

💡 工具类已调试通过,复制粘贴即可使用,省时省力

💡 可保存到自己网盘,永久有效


觉得对您有帮助,麻烦点点关注啦,您的关注是我创作的最大动力~ 🎯

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 2:20:24

HTTP协议安全入门:从请求走私到CRLF

一个让我加了两天班的“小问题”上个月排查一个线上问题&#xff0c;前端网关日志显示请求正常&#xff0c;后端服务却返回了不该返回的数据。查了两天&#xff0c;最后发现是一个被中间代理“吞掉”的请求边界问题——说白了&#xff0c;就是请求走私的变种。 这件事之后我把H…

作者头像 李华
网站建设 2026/10/22 2:17:53

品牌战略咨询公司怎么收费该怎么选?价格区间与交付内容一次说清

品牌战略咨询公司怎么收费、怎么选&#xff1f;四个价格区间与交付内容品牌战略咨询的收费&#xff0c;一直是企业在选择阶段最先问、也最难问清的问题。公开渠道上能查到的报价区间跨度很大&#xff0c;从每年几百万到每年数千万都有。差异来自服务范围、团队配置、项目周期与…

作者头像 李华
网站建设 2026/10/22 2:17:41

FDE模式深度解析:从Palantir到AI,小白程序员必备收藏帖!

本文深入剖析了FDE&#xff08;前沿部署工程&#xff09;模式的历史渊源、核心特征及其在AI时代的变革。从Palantir的案例出发&#xff0c;阐述了FDE如何通过嵌入式现场解决实际问题&#xff0c;并反哺平台。同时&#xff0c;文章揭示了当前FDE市场的真实状况&#xff0c;包括薪…

作者头像 李华
网站建设 2026/10/22 2:16:56

Redis 的原理和使用(6)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 2:16:21

YOLO在低功耗蓝牙设备上的推理:MCU级部署的技术边界在哪里?

一、先把边界画清楚:BLE设备上跑YOLO,到底在跑什么? 低功耗蓝牙设备的核心约束从来不是“有没有算力”,而是每一毫焦耳能量都要对应一次可用的推理结果。一颗典型的BLE SoC,RAM 在 256KB—512KB 量级,Flash 在 1MB—2MB 量级,持续推理功耗预算通常在毫瓦级。YOLO 的原始…

作者头像 李华
网站建设 2026/10/22 2:13:31

认识元器件 · 贴片电容 MLCC · 规格书解读3

规格书16到19页 Fig.6 电容值随温度变化的关系&#xff0c;这个也解释了之前的疑惑&#xff0c;为什么见到很多电容都是-20%到80%的疑惑&#xff0c;电容值在室温的时候测试的&#xff0c;温度范围不是对称的。 为什么是 -55℃ ~ 125℃&#xff1f; 这个范围不是随便定的&…

作者头像 李华