1. 概述
老話說的好:便宜沒好貨,有價值的商品,即使再貴,也有人會買。
言歸正傳,今天繼續討論有關“鎖”的話題,synchronized 和 ReentrantLock 大家應該都非常熟悉了,但這兩個鎖,作用域僅限制於單個Tomcat,如果使用了 Tomcat 叢集,這兩個鎖就不管用了。
此時我們就要引入分散式鎖了,分散式鎖的實現方式有很多,可以使用 Mysql 資料庫實現,也可以使用 Zookeeper 實現,當然比較常用的還是使用 Redis 實現。
今天我們就來聊一下基於 Redis 的實現方式 —— Redisson。
2. Redisson 在 Springboot 中的使用
2.1 引入依賴
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.16.3</version> </dependency>
2.2 在 Springboot 配置中配置Redis
支援 Redis單體、Redis哨兵模式 和 Redis叢集模式
spring: redis: host: 192.168.1.12 port: 6379 password: zhuifengren
2.3 Demo程式碼
@Autowired private RedissonClient redissonClient; public void lock() { RLock rLock = redissonClient.getLock("myLock"); log.info("進入了方法"); try { // 加鎖,30秒後自動釋放鎖 rLock.lock(30, TimeUnit.SECONDS); log.info("獲得了鎖"); Thread.sleep(15000); } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { // 釋放鎖 rLock.unlock(); log.info("釋放了鎖"); } }
3. 綜述
今天聊了一下 Springboot中使用Redisson實現分散式鎖,希望可以對大家的工作有所幫助。
歡迎幫忙點贊、評論、轉發、加關注 :)
關注追風人聊Java,每天更新Java乾貨。