✨这里是第七人格的博客✨小七,欢迎您的到来~✨
🍅系列专栏:中间件开发🍅
✈️本篇内容: 分布式锁组件✈️
🍱 本篇收录完整代码地址:https://gitee.com/diqirenge/seven-lock-starter 🍱
几年以前小七在面试的时候,和面试官探讨过一个重复造轮子的事情。比如今天的主角——分布式锁,市面上有很多成熟的解决方案,包括框架、组件等,其中Redisson关于锁的实现也非常的完美了。今天我们就基于Redisson封装一个我们自己的分布式锁starter组件。
公司关于分布式锁的实现五花八门,虽然都是基于redis实现的,但是有的项目用的Redisson,有的项目用的RedisTemplate,有的项目两个都在混用,
且使用方式都是直接调用的框架的API,有些小伙伴面对各种各样的分布式锁实现方式,一脸懵逼,不知道如何下手,甚至使用错误的情况也不在少数。
为了解决这个问题,我们计划统一技术栈,使用Redisson实现分布式锁,并提供一个基于Redisson实现的分布式锁的框架封装。
为了方便各个系统更好的接入新的分布式锁组件,我们计划如下:
1、基于Spring boot starter封装,接入方只需要引入依赖,替换调用方法即可
2、尽量少的配置改动,如果项目以前有使用Redisson,甚至不修改配置,也可以使用
兼容方案如图所示:
名称 | 版本 |
---|---|
JDK | 1.8 |
Redis | 7.2.0 |
redisson-spring-boot-starter | 3.15.4 |
spring-boot-configuration-processor | 2.3.5.RELEASE |
spring-boot-autoconfigure-processor | 2.3.5.RELEASE |
master
https://gitee.com/diqirenge/seven-lock-starter
1、添加Maven依赖
2、新建一个类DistributedLockProperties,用于存储和获取分布式锁的超时时间配置。
3、编写DistributedLockRedissonAutoConfiguration,该类继承了Redisson的相关配置,并且引入了上面我们自己的配置
4、定义分布式锁接口
5、使用Redisson实现分布式锁接口
6、自定义分布式锁异常类
7、在spring.factories中指明组件自动配置类
8、执行Maven打包/上传命令
1、引入依赖
2、加入配置
3、编写测试用的Controller
4、编写启动类
5、测试
启动项目后先请求http://localhost:8080/query?userId=123,5秒内再次请求http://localhost:8080/query?userId=123,返回
请求过于频繁,请稍候重试
本文通过详细的步骤和代码示例,展示了如何从零开始实现一个基于Redisson的分布式锁组件,并提供了封装和测试方案。读者可以直接用于生产。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。