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干貨。