| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Graph
- stream
- ㅅ
- 윤성우의 열혈 자료구조
- 메모리구조
- datastructure
- 윤성우 열혈자료구조
- buffer
- C 언어 코딩 도장
- s
- Selection Sorting
- Algorithm
- Stack
- insertion sort
- coding test
- R
- C programming
- 알기쉬운 알고리즘
- Serialization
- 이스케이프 문자
- 이것이 자바다
- JSON
- list 컬렉션
- 혼자 공부하는 C언어
- Today
- Total
Engineering Note
[Redis] Redisssion 락 사용 방법, RLock Class, tryLock()메서드 본문
[Redis] Redisssion 락 사용 방법, RLock Class, tryLock()메서드
Software Engineer Kim 2025. 12. 28. 23:37Redission 4.0.0버전 기준으로 작성하였습니다.
Redis를 이용해서 분산락을 구현 하기 위한 Redisson Lock 특징 정리
- Ression 락은 Java의 Lock 인터페이스를 구현해서 만들어졌다.
- Pub/Sub 방식으로 동작한다. (polling 방식 아님X), 락을 얻으려는 쓰레드가 있다면 다른 Ression 인스턴스를 통해 Redis가 알려준다.
- DeadLock은 watchdog을 두어 방지한다.
- 만약 한 인스턴스 쓰레드가 락을 획득하고 장애가 발생하면, 락이 영원히 풀리지 않을 수 있는데 watchdog으로 락을 획득한 인스턴스가 살아 있을 동안만 만료시간을 연장한다.
- leastime을 설정하면 watchdog 동작을 사용하지 않을 수 있다. leastime 시간이 지나면 락이 해제된다.
- leastime은 tryLock() 메서드 파라미터로 전달하는데, 사용하지 않으려면 -1값을 전달하면 된다. -1로 leastime을 설정하면 watchdog이 활성화된다.
Redisson Lock 특징을 고려해 분산락을 구현한다면 아래와 같이 트레이드 오프를 고려할 수 있습니다.
데이터 정합이 중요한 상황에서 분산락을 구현중이라면 watchdog을 활성화하여 자동으로 Lock 풀리는 상황을 막으면서, 데드랑 상황도 막을 수 있습니다. 반대로 데이터 정합을 어느정도 포기하고 성능이 중요한 경우라면 모니터링을 통해 적절한 leasTime을 설정하여 하나의 쓰레드가 오랫동안 락을 붙잡는 상황을 막을수도 있습니다.
참고 자료 : https://redisson.pro/docs/data-and-services/locks-and-synchronizers/#__tabbed_1_1
Locks and synchronizers - Redisson Reference Guide
Locks and synchronizers Lock Valkey or Redis based distributed reentrant Lock object for Java and implements Lock interface. Uses pub/sub channel to notify other threads across all Redisson instances waiting to acquire a lock. If Redisson instance which ac
redisson.pro
https://redisson.pro/docs/configuration/
Configuration - Redisson Reference Guide
redisson.pro
'SW Engineering > 선착순 이벤트' 카테고리의 다른 글
| [선착순이벤트] 선착순 이벤트 Redis vs 비관적락 성능 비교와 고가용성 측면 비교 (0) | 2026.01.03 |
|---|---|
| Redis 도입 여부 결정하기 (0) | 2026.01.01 |
| [SW Engineering] Redis 분산락 구현 과정, 짧은 lease time으로 발생가능한 동시성 문제 해결 + Pub/Sub 동작 원리 (0) | 2025.12.28 |
| [SW Engineering] @Transactional과 Redis 분산락, 왜 같이 쓰면 안 될까? (feat. Facade 패턴) (0) | 2025.12.27 |
| [SW Engineering] Redis 분산락을 통한 동시성 문제 해결 과정 (0) | 2025.12.25 |