블로그로 돌아가기

Redisson 분산락이란? pub/sub으로 스핀락의 Redis 부하를 없애는 원리

4편 스핀락은 락이 풀렸는지 계속 물어봐 Redis에 부하를 줬습니다. Redisson은 pub/sub으로 '풀리면 통지받아' 폴링을 없애고, watchdog으로 만료 문제까지 다룹니다. 스핀락과의 차이와 Redisson이 대신 챙겨주는 것들을 정리했습니다.

에그코드
2026년 7월 16일
7 min read
#Redisson#레디슨#Redis분산락#pubsub#Redis#자바#스프링부트#MSA#워치독#스핀락#동시성제어#데이터베이스락#백엔드개발#에그코드

에그코드 기술 이야기 · 데이터베이스 Lock 시리즈 ⑤

안녕하세요, 에그코드입니다.

저희는 자체 서비스를 직접 운영하며 웹·SaaS·MVP를 만드는 개발사입니다.

4편의 스핀락은 락이 풀렸는지 계속 물어봐서 Redis에 부하를 줬습니다. 그럼 "매번 묻지 말고, 풀리면 알려달라"고 하면 어떨까요?

그걸 해주는 게 이번 5편의 Redisson입니다.

Redisson이 락 해제 알림을 구독하고 대기하다 통지받아 깨어나는 pub/sub 개념도
계속 묻지 않고, 풀렸다는 통지를 받으면 그때 움직인다

Redisson은 어떻게 다를까 — pub/sub

Redisson은 자바에서 많이 쓰는 Redis 라이브러리입니다. 스핀락과 달리 계속 폴링하지 않습니다.

락을 못 잡으면, 그 락의 해제 알림 채널을 구독하고 대기합니다. 누군가 락을 풀면 "풀렸다"는 메시지가 발행(publish)되고, 그 신호를 받은(subscribe) 서버만 깨어나 다시 시도합니다.

이 방식을 pub/sub(발행·구독)이라고 합니다.

스핀락과 뭐가 다른가

차이는 대기하는 방식입니다. 스핀락은 "풀렸어? 아직?"을 쉼 없이 물어봅니다. 바쁜 대기죠. Redisson은 조용히 기다리다 통지가 올 때만 움직입니다.

구분스핀락 (Lettuce)pub/sub (Redisson)
대기 방식계속 폴링(바쁜 대기)구독 후 통지 대기
Redis 부하높음 · 요청 폭주낮음 · 통지 때만
구현직접 짜야 함라이브러리가 제공
만료 관리TTL 직접 계산watchdog 자동 연장

그래서 Redis에 가는 요청이 확 줄어듭니다. 서버가 많고 대기가 길수록 이 차이는 더 커집니다. 락을 기다리는 서버가 수십 대라면, 폴링이 사라지는 것만으로 Redis가 훨씬 편해집니다.

락이 먼저 풀리는 문제 — watchdog

3·4편에서 걱정한 게 있었죠. 만료 시간(TTL)이 작업보다 짧으면, 일하는 도중에 락이 풀려버립니다.

Redisson은 watchdog으로 이걸 막습니다. 락을 쥔 서버가 살아 있고 작업이 안 끝났으면, 백그라운드에서 만료를 자동으로 연장합니다. 반대로 그 서버가 죽으면 연장이 멈춰, 락이 저절로 풀립니다.

watchdog가 작업 중에는 락 만료를 연장하고 서버가 죽으면 멈춰 자연 해제되는 흐름도
살아 있으면 연장, 죽으면 멈춰 자연 해제

그 외에 챙겨주는 것들

Redisson은 직접 짜기 번거로운 것들을 대신 해줍니다. 같은 스레드가 락을 또 잡아도 안전한 재진입(reentrant), 대기·만료 시간을 지정하는 tryLock, 여러 명령을 원자적으로 묶는 Lua 스크립트 처리까지요.

스핀락을 손수 짜며 신경 쓰던 것들을 라이브러리가 감춰 줍니다.

Redisson이 대신 처리해 주는 pub/sub 대기·watchdog·재진입·tryLock 정리 카드
직접 짜던 것들을 라이브러리가 대신 챙긴다

정리하며

Redisson은 pub/sub으로 부하를 줄이고, watchdog으로 만료 문제까지 다뤄 스핀락보다 안전합니다.

물론 그만큼 내부가 복잡하고, 옵션(대기·만료·연장) 하나를 잘못 잡으면 오히려 장애가 됩니다. 락 방식은 서비스마다 정답이 다르고, 잘못 고르면 정합성이 조용히 깨집니다.

저희 에그코드는 자체 서비스를 운영하며, 트래픽·구조에 맞는 락 전략을 매번 골라 정합성 문제가 없도록 합니다.

Redisson 핵심 요약과 다음 편 전략 가이드 연결을 정리한 카드
한 장으로 정리하는 Redisson

다음 편 예고 — 6편 «전략 선택 가이드». 낙관·비관·분산… 결국 언제 뭘 써야 할까요?

함께 읽어보세요 — 동시성 제어, 결국 뭘 언제 쓸까 — 선택 기준 3가지 · 분산 락 — Redis로 한 번에 하나만 보장하기 · 낙관적 락 — 동시성 문제의 출발점 · 비관적 락 — 먼저 잠그고 시작하는 방식

에그코드는 자체 서비스를 운영하며 웹·SaaS·MVP를 만듭니다. 트래픽·구조에 맞는 락 전략을 함께 설계합니다.

동시성·데이터 정합성 설계가 걱정된다면 문의하기

문의하기

MVP 개발, 어디서부터 시작해야 할지 모르겠다면?

무료 MVP 견적 받기
카카오톡 문의