본문 바로가기
Spring/redis

[spring redis 1편] 분산락 (redis, spring)

by 무대포 개발자 2023. 10. 5.
728x90
반응형

목차는 spring redis 목차 에 있습니다.

[spring redis 1편] 분산락 (redis, spring, lettuce)

RedisLockRegistry

  • spring integration 에서 제공해주는 Redis 분산락 입니다.
  • spin lock, pub-sub lock 옵션을 제공하며, pub-sub 이 성능상 이유로 선호 됩니다.
    • spin lock 은 주기적으로 lock 을 획득하며, pub-sub 은 pub-sub 구조로 lock 을 획득하기에 성능상 유리합니다.

어떻게 동작하는지?

  • LockRegistry 는 UUID 와 lock 의 map 을 메모리에 가지고 있습니다. lockRegistry 는 일종의 lock 저장소입니다.

  • lockRegistry 에서 lock 을 획득하려고 할 때, map 에 lock key 가 존재하면 lock 을 return 합니다.

  • 만약 없다면 redis 와 통신하여 lock 을 획득할려고 시도합니다. (Registry key:lock name)

    • lock 이 존재하면 return 하고 없으면 새로 만듭니다.
  • lock 을 획득했다면 lock.tryLock() 을 호출하며, 기본적으로 lockRegistry.obtain 과 유사한 스텝을 가집니다. 처음에는 map 의 locks 에 lock 이 있는지 체크하고, 없으면 Redis 에서 체크합니다.

Reference

댓글