Redis Transaction

Redis에서 트랜잭션을 위한 커맨드를 제공한다.

Round Trip을 최소화할 수도 있지만, Atomic한 동작을 보장하게 할 수 있다.

이를 통해 동시성 해결을 위해 많이 사용되기도 한다.

WATCH를 통해 낙관적 락을 사용할 수 있다.

WATCH 사용시, Race Condition이 발생하면, 트랜잭션이 실패해서 재처리가 필요하다.

한계

트래픽이 늘어나면, Redis Cluster를 통해 처리량을 높인다.

이때, Redis Cluster를 통해 병렬처리를 하게 되면, Transaction을 사용할 수 없다.

정확히 말하면 16384개의 hash slot에 나눠 데이터를 저장하는데, 대상 키들이 모두 같은 슬롯에 있는 경우에만 트랜잭션을 실행할 수 있다.

해결법

  1. 애플리케이션 레벨에서 로직으로 트랜잭션 구현