Database
Redis 기반 분산 락 가이드
Redis 분산 락의 안전한 기본 패턴과 Redlock 사용 시 주의점을 정리합니다.
Redis 기반 분산 락 가이드
Redis 락은 간단하지만 오용이 쉽습니다. 핵심은 "락 획득보다 락 해제 안전성"입니다.
안전한 기본 패턴
락 획득:
SET key value NX PX ttlvalue는 고유 토큰(UUID)
락 해제:
- Lua 스크립트로
GET == value일 때만DEL
이 조합이 최소 안전선입니다.
꼭 지켜야 할 원칙
- TTL 없는 락 금지
- 락 소유자 확인 없는 해제 금지
- 임계구역 시간이 TTL보다 길 수 있으면 갱신 전략 필요
- 락 실패 시 재시도 백오프 적용
Redlock에 대한 현실적 관점
Redlock은 고가용성 락 시도이지만, 모든 분산 시스템 문제를 해결하지는 않습니다. 매우 강한 정합성이 필요한 금융/원장 핵심 경로라면 DB 트랜잭션 또는 합의 기반 락을 우선 검토해야 합니다.
적합한 사용처
- 배치 중복 실행 방지
- 스케줄러 리더 선출(완전 엄격성 불필요)
- 캐시 재생성 중복 방지
결론
Redis 락은 "정확히 한 번" 보장 도구가 아니라 실용적 경합 제어 도구입니다. 실패 시 보상 로직까지 포함해서 설계해야 안전합니다.