사용자 도구

사이트 도구


nosql:redis:distributed_lock

Redis Distributed Lock

Lock 방식

  • Spin Lock : SET NX EX 로 원자적으로 값을 설정하고 Expiration 지정. 그리고 Lock 을 다른 쪽에서 소유하면 spin 을 돌면서 지정 시간마다 다시 Lock 획득 재요청.
  • Pub/Sub : Lock 을 다른쪽이 소유해도 재요청 안함. Lock 획득이 가능해지면 message 를 publish 하는 방식. 구현 복잡도가 높고 Redis CPU 점유율, 과잉 트래픽 발생등의 문제가 발생할 수 있음.
  • 일반적인 Spin Lock과 Pub/Sub Lock 은 단일 Redis 인스턴스 기반으로 인스턴스에 문제가 생길경우 lock 이 꼬일 수 있다.
  • 좀 더 안전한 분산 Lock을 원한다면 Distributed locks with Redis – Redis 에서 추천하는 Redlock을 사용해야 한다.
  • 하지만 일반적인 경우에는 Spin Lock 으로 충분하다.

Lettuce 기반

Redisson

  • Redisson은 거의 모든 방식의 분산 Lock 구현을 제공해준다.

참조

nosql/redis/distributed_lock.txt · 마지막으로 수정됨: 2025/02/19 11:26 저자 kwon37xi