20211114 基於Redis實現分散式鎖(使用Redisson框架)
阿新 • • 發佈:2021-11-14
原理圖
Redis 相關的四種技術
- Jedis
- Lettuce(
spring-boot-starter-data-redis
預設引入) - RedisTemplate
- Redisson
簡單使用
操作步驟
-
pom.xml 新增依賴
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.16.4</version> </dependency>
-
application.properties 配置 Redis 連線資訊
spring.redis.host=localhost spring.redis.port=6379 #spring.redis.password=
-
簡單使用類
import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MyRedisLock { @Autowired private RedissonClient redissonClient; public void testLock() { RLock rLock = redissonClient.getLock("redisKey"); try { rLock.lock(); Thread.sleep(10000000); } catch (InterruptedException e) { e.printStackTrace(); } finally { if (rLock != null) { rLock.unlock(); } } } }
-
Spring Boot 啟動類
@SpringBootApplication public class RedisLockApplication { public static void main(String[] args) { ConfigurableApplicationContext applicationContext = SpringApplication.run(RedisLockApplication.class); MyRedisLock myRedisLock = applicationContext.getBean(MyRedisLock.class); myRedisLock.testLock(); } }
實現效果
鎖的型別在 Redis 中是 Hash
,預設 TTL 是 30s
,當 TTL 到達 20s 時,會自動延期,TTL 重新回到 30s