sayu.day
Database

Redis 기반 분산 락 가이드

Redis 분산 락의 안전한 기본 패턴과 Redlock 사용 시 주의점을 정리합니다.

발행 2025년 12월 27일1153

같은 주제에서 이어 읽기

MongoDB 샤딩(Sharding) 완벽 가이드

Database 안에서 이어지는 글

Redis 락은 간단하지만 오용이 쉽습니다. 핵심은 "락 획득보다 락 해제 안전성"입니다.

안전한 기본 패턴

락 획득:

  • SET key value NX PX ttl
  • value는 고유 토큰(UUID)

락 해제:

  • Lua 스크립트로 GET == value일 때만 DEL

이 조합이 최소 안전선입니다.

꼭 지켜야 할 원칙

  1. TTL 없는 락 금지
  2. 락 소유자 확인 없는 해제 금지
  3. 임계구역 시간이 TTL보다 길 수 있으면 갱신 전략 필요
  4. 락 실패 시 재시도 백오프 적용

Redlock에 대한 현실적 관점

Redlock은 고가용성 락 시도이지만, 모든 분산 시스템 문제를 해결하지는 않습니다. 매우 강한 정합성이 필요한 금융/원장 핵심 경로라면 DB 트랜잭션 또는 합의 기반 락을 우선 검토해야 합니다.

적합한 사용처

  • 배치 중복 실행 방지
  • 스케줄러 리더 선출(완전 엄격성 불필요)
  • 캐시 재생성 중복 방지

결론

Redis 락은 "정확히 한 번" 보장 도구가 아니라 실용적 경합 제어 도구입니다. 실패 시 보상 로직까지 포함해서 설계해야 안전합니다.

다음 읽기

이 생각이 이어지는 방향

Database 더 보기
공유

읽은 뒤의 대화

읽은 뒤의 생각을 이어갑니다

질문, 반론, 조용한 후속 메모를 이 글 아래에 남길 수 있습니다.

sayu.day는 생각과 작업의 흔적을 천천히 정리하는 개인 출판물입니다.
직접 겪고 검토한 내용, 다시 읽을 만한 아이디어, 작업하며 남긴 메모를 모읍니다.
시간이 지난 글은 현재의 판단과 다를 수 있어 업데이트 맥락을 함께 남깁니다.

© 2026 sayu.day