거래 시스템을 이용하기 위해 물건의 수량을 등록하게 도는데 이때 거래를 위해 거래 신청을 하면 한정된 수량에 접근을 하게 됩니다. 한정된 수량에 접근을 위해서는 동시성 제어가 반드시 필요했고 동시성 제어가 되지 않는다면 거래 신청은 되었지만 수량은 부족한 상황이 생길 수 있습니다. 따라서 동시성 제어 기능은 반드시 필요했으면 이를 구현하기 위해 Redis를 사용했습니다. 물론 DB에서 Lock을 설정해서 동시성 제어를 하는 방식으로 낙관적 락과 비관적 락 방식도 존재하지만 이는 데이터 처리가 순차처리가 되는 방식을 강요하게 되고,   요즘 같은 분산 구조에 트래픽이 많은 인프라에서는 성능이 상당히 떨어지게 되는 동시성 제어 방식이기 때문에 더 개선된 방식을 원했습니다.

먼저 Redis의 구조의 특징을 살펴보면 Redis는 명령을 실행 및 처리할때 Single Thread로 진행됩니다. 이를 통해서 원자성을 유지할 수 있어 동시성 제어가 됩니다.

또한 Redis는 메모리에 저장되는 방식 덕분에 DB보다 빠른 속도로 데이터를 처리할 수 있으며 DB의 연결은 상당히 비싼 자원에 속하기 때문에 빈번하게 데이터 Lock을 잡는것이 비효율적이 되는 이유가 되었는데, Redis는 고속의 메모리 처리방식이고 여기서 처리된 결과를 한번에 DB에 처리를 시킨다면 이상적인 동시성 제어가 가능할 것이라고 생각했습니다.