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

SpringBoot结合Redisson实现分布式锁

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:SpringBoot实战


系列文章目录

以下是专栏部分内容,更多内容请前往专栏查看!

标题
一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码)
一张思维导图带你学会Springboot创建全局异常、自定义异常
一张思维导图带你打通SpringBoot自定义拦截器的思路
28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈
一张思维导图带你学会SpringBoot、Vue前后端分离项目线上部署
一张流程图带你学会SpringBoot结合JWT实现登录功能
一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件
一张思维导图带你学会使用SpringBoot异步任务实现下单校验库存
一张思维导图带你学会SpringBoot使用AOP实现日志管理功能

在这里插入图片描述


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • 专门为RabbitMQ入门打造的专栏,持续更新中。。。。。。。。链接>>>>>>>《图解RabbitMQ》

文章目录

  • 系列文章目录
  • 专栏推荐
  • 🌟引入依赖
  • 🌟配置文件
  • 🌟Redisson配置类
  • 🌟使用
  • 🌟注意事项
  • 🌟写在最后

Redisson官方中文文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95

🌟引入依赖

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.10.1</version>
</dependency>

🌟配置文件

spring:redis:host: ippassword: 密码port: 端口号

🌟Redisson配置类

@Data
@Configuration
public class RedissonConfig {@Value("${spring.redis.host}")private String redisHost;@Value("${spring.redis.port}")private String redisPort;@Value("${spring.redis.password}")private String redisPassword;@Beanpublic RedissonClient redissonClient(){//创建配置Config config=new Config();config.useSingleServer().setPassword(redisPassword).setAddress("redis://"+redisHost+":"+redisPort).setPingConnectionInterval(1000);//创建客户端RedissonClient redissonClient= Redisson.create(config);return redissonClient;}
}

🌟使用

String lockKey="user:coupon:"+couponId;
RLock lock = redissonClient.getLock(lockKey);
lock.lock();
try{//业务逻辑
}finally{lock.unlock
}

🌟注意事项

其加锁API有两个,一个是lock无任何参数;一个是要显式指明解锁时间。
看门狗机制:在redisson实例关闭前,不断的延长锁的有效期。

  1. 默认情况下,不显式设置锁过期时间,看门狗检查锁的超时时间是30秒;或者通过Config.lockWatchdogTimeout来进行指定。
  2. 如果显式的指定了锁过期时间,则无看门狗,并且无需手动释放锁。

🌟写在最后

有关于SpringBoot结合Redisson实现分布式锁到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


请添加图片描述

http://www.lryc.cn/news/181909.html

相关文章:

  • css字体属性
  • 云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka
  • 【白细胞介素6(IL-6)】
  • 设计模式之抽象工厂模式--创建一系列相关对象的艺术(简单工厂、工厂方法、到抽象工厂的进化过程,类图NS图)
  • 大数据-玩转数据-Flink SQL编程实战 (热门商品TOP N)
  • python中实现定时任务的几种方案
  • AcWing算法提高课-5.6.1同余方程
  • Docker Tutorial
  • 平面图—简单应用
  • 安装JDK(Java SE Development Kit)超详细教程
  • KUKA机器人通过3点法设置工作台基坐标系的具体方法
  • 以太网的MAC层
  • Hadoop启动后jps发现没有DateNode解决办法
  • VUE3照本宣科——应用实例API与setup
  • json/js对象的key有什么区别?
  • 极大似然估计概念的理解——统计学习方法
  • python模拟表格任意输入位置
  • 如何限制文件只能通过USB打印机打印,限制打印次数和时限并且无法在打印前查看或编辑内容
  • 车牌文本检测与识别:License Plate Recognition Based On Multi-Angle View Model
  • Blender中的4种视图着色模式
  • Flutter项目安装到Android手机一直显示在assembledebug
  • 数据挖掘实验(二)数据预处理【等深分箱与等宽分箱】
  • Vue2 第一次学习
  • tiny模式基本原理整合
  • 使用聚氨酯密封件的好处?
  • DevEco Studio如何安装中文插件
  • 10.2 校招 实习 内推 面经
  • Golang 语言学习 01 包含如何快速学习一门新语言
  • 整理了197个经典SOTA模型,涵盖图像分类、目标检测、推荐系统等13个方向
  • 10.4 小任务