락에 대해 학습중입니다. (JPA, MySQL, Redis) 락 이용해서 동시성 문제 해결법을 찾고 있습니다.

낙관적 락, 비관적 락, 분산락(네임드 락 이용) 등을 공부하다가 의문이 생겼는데요,


낙관적 락 

- 충돌 잦으면 락 획득 재시도 로직 때문에 성능 안좋음


비관적 락 

- 충돌 잦으면 낙관적 락보다 성능좋음.


분산 락

- 스케일 아웃된 DB 환경에서도 사용 가능

- Redis 라이브러리마다 다른데 

Lettuce는 스핀락으로 구현되서 재시도 많으면 불리 

Redisson은 pub-sub 기반이라 재시도 많으면 유리


정확하진 않지만 이렇게 알고있습니다.


질문은

1. 잘못 알고 있나요?

2. 제가 공부한게 맞다면, 분산 환경 고려하면 무조건 비관적 락, 낙관적 락 말고 분산락 + Redis(Lettuce/Redisson) 쓰는게 좋은건가요?