记一次Redisson分布式锁实践
背景
在分布式架构服务系统中,分布式锁是一种处理幂等的有效方式,记录一下生产级Redisson的使用方式。
SpringBoot引入
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.17.1</version>
</dependency>
配置application配置文件
配置redis的连接信息
redisson 的使用流程
@RestController
@RequestMapping("/redisson")
@AllArgsConstructor
public class RedissonController {
private final RedissonClient redissonClient;
@GetMapping("/test")
public String test() {
// 生成一把锁,锁的生成要结合业务场景,为单笔业务交易设置一个KEY,通过业务KEY来生成锁
RLock lock = redissonClient.getLock("test");
boolean isLock;
try {
// 尝试加锁,最多等待1秒,上锁以后10秒自动解锁
// 这个等待时间和自动解锁时间需根据业务做相应的调整
isLock = lock.tryLock(1, 10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
return "加锁失败,";
}
try {
if (!isLock) {
return "未获取到锁";
}
// 获取到锁,业务逻辑处理
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
return "业务处理异常";
}
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
// 释放锁
lock.unlockAsync();
}
}
return "ok";
}
}
posted on 2022-11-25 11:37 bigstrong_code 阅读(98) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码