Study

Redis로 분산락 거는 방법

kinim329 2026. 5. 7. 23:50

어제는 분산락이 왜 필요한지 정리했다.

오늘은 Redis를 사용해서 분산락을 어떻게 거는지 간단히 정리해보려고 한다.

락의 기준 정하기

 

분산락을 걸 때는 먼저 무엇을 기준으로 잠글지 정해야 한다.

주식 매수 기능에서는 같은 계좌의 잔액이 동시에 변경되면 문제가 생길 수 있다.

그래서 계좌 ID 기준으로 락을 걸 수 있다.

lock:account:{accountId}
 

예를 들어 계좌 ID가 1이면 다음 key를 사용한다.

lock:account:1

Redis로 락 걸기

Redis에서는 보통 SET NX EX 방식을 사용한다.

SET lock:account:1 random-value NX EX 3
 

NX는 key가 없을 때만 저장한다는 의미이다.

이미 같은 key가 있으면 락 획득에 실패한다.

EX 3은 3초 뒤에 락이 자동으로 사라지게 하는 설정이다.

서버가 작업 중 죽어도 락이 계속 남는 것을 막기 위해 만료 시간이 필요하다.

처리 흐름

  1. 요청이 들어온다.
  2. Redis에 lock key 생성을 시도한다.
  3. 성공하면 로직을 실행한다.
  4. 끝나면 락을 해제한다.
  5. 실패하면 이미 처리 중인 요청으로 본다.

'Study' 카테고리의 다른 글

로그 레벨  (0) 2026.05.10
로그 찍기의 중요성  (0) 2026.05.09
분산락  (0) 2026.05.06
N+1문제  (0) 2026.05.05
Redis Sorted Set  (0) 2026.05.02