前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redisson分布式锁使用实例(一)

Redisson分布式锁使用实例(一)

作者头像
用户9919783
发布2022-07-26 11:30:28
1K0
发布2022-07-26 11:30:28
举报
文章被收录于专栏:后端从入门到精通

本文环境搭建:Springoot + Redisson 3.12.3 + Maven 3.6.1 +lombok

1、业务需求分析

项目部署在多个服务器,当我们有业务需要在每天凌晨,拉取数据写入数据库的时候,所有服务器上的定时器都在凌晨一起运行,数据库负荷太大,这时候如何解决呢?当多线程处理业务,因为线程不安全,导致数据紊乱,如何解决呢?Redis的分布式锁就能处理这些场景,这篇文章主要介绍的是redisson分布式锁的使用实例。

2、redis分布式锁基本特性

互斥性:这是最基本的特性,保证多个线程进入的情况下,只有一个线程可以获取到锁。

容错率:可以用unlock自己解锁,而且解铃还须系铃人,哪个线程上的锁,就由谁来解锁。

唯一性:redis分布式锁第一个参数和第二个参数会保证其唯一性,我在业务中第二个参数用的是uuid。

防止死锁:给获取锁的线程一个过期时间,保证业务处理出现异常,时间过期后,锁也能正常释放。

Redisson是一个高级的分布式协调Redis客户端,在项目中直接引入redisson的maven包,使用分布式锁会事半功倍。

注意事项,redisson使用trylock上锁的时候,最好带参数,否则在unlock释放所得时候,若当前线程没有获取锁,会报错,即使用locked先判断一下也不行,因为locked底层源码是任意线程上锁都会返回true。

纸上得来终觉浅,绝知此事要躬行,话不多说,直接撸代码。

3、实例代码:

先导入需要的maven包,在写一个redisson装入bean容器,方便后面依赖注入,先导入需要的maven包,在写一个redisson装入bean容器,方便后面依赖注入,例子中lock和trylock实例全部都有,若没有开启分布式锁,则线程不安全,会导致数据紊乱,甚至多消费,开启之后,控制台显示消费正常。

最后结果可以看到,分布式情况下消费很安全,不会出现消费紊乱,多消费。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端从入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档