0

redis 독립 실행 형이 낙관적 잠금을 제공하는 방법을 읽었습니다. 또한 분산 잠금을 사용할 수있는 redis 웹 사이트의 Redlock 알고리즘을 사용했습니다.클러스터 모드의 Redis 잠금이 활성화되었습니다.

이제 내가 이해할 수없는 것은 Redis에서 분산 잠금 (클러스터 모드 사용)이 필요한 이유입니다.

분산 모드를 사용하면 각 샤드가 중복되지 않는 레코드가있는 최대 15 개의 샤드를 가질 수 있습니다. 공유 데이터가 없으므로 분산 잠금의 필요성은 무엇입니까?

각 공유에 대한 낙관적 인 잠금이 트릭을 수행하지 않습니까? 한 가지 이유는 다중 키 작업 일 수도 있지만 그 외에는 아무것도 생각할 수 없습니다.

내 이해가 정확합니까?

답변

0

redis의 분산 잠금은 일반적으로 redis의 데이터가 아닌 분산 된 앱 잠금에 사용됩니다. 예를 들어 쇼핑 앱에는 '유료'버튼이 있으며 거래 처리에는 몇 초가 걸릴 수 있습니다.이 기간 동안 사용자는 버튼을 여러 번 누르십시오.

각 REST 호출은 다른 웹 서버로 이동할 수 있습니다. 복수 청구를 어떻게 확실하게 방지합니까? 물론 Redis 잠금 장치가있는!

하지만 단일 노드/샤드 잠금을 사용하는 경우이 정확한 시간 창에서이 노드가 작동하지 않아 트랜잭션이 손상되거나 중복 될 수 있습니다. RedLock 분산 알고리즘을 사용하면 단일 노드의 실패로 인해 잠금이 일관된 상태로 유지됩니다.

+0

답장을 보내 주셔서 감사합니다. 내 이해에 따르면 redis는 단일 스레드이므로 다른 웹 서버에서 요청을 받더라도 데이터베이스는 먼저 다른 트랜잭션으로 이동하기 전에 하나의 트랜잭션을 완료합니다. 잠금은 어떻게 도움이됩니까? 내가 틀렸다면 나를 바로 잡아주세요. – cyclops

+0

응용 프로그램을 잠글 수 있습니다. –

관련 문제