Redis는 in-memory key-value storage로 주로 DB 레이어의 부하 분산과 빠른 응답을 위한 캐싱 레이어로 쓰인다.
특히 value에도 다양한 자료구조를 지원하고 있어 이를 활용해 다양한 종류의 시스템 설계가 가능하다.
부의 마블 프로젝트에서 Redis를 사용하고 있는 곳은 다음과 같다.
Redis는 Single Thread로 동작한다. 싱글 스레드로 동작하는 만큼 데이터의 atomic 함을 보장 해주기 때문에 데이터의 일관성을 보장하며 동시성 문제가 발생하지 않는다는 장점이 있지만, 하나의 CPU로 동작하기 때문에 한 번에 하나의 커맨드만 실행할 수 있다.
평균적으로 초당 10만 개의 get/set이 가능하지만, 하나의 명령이 실행되고 있는 동안에 다음 명령은 무조건 대기해야 한다.
위와 같이 Redis는 다양하게 사용되고 있기 때문에 Redis가 운용되고 있는 인스턴스에 문제가 생기면 서비스 이용에 문제가 생길 수 있어, 우리는 Master로 사용하는 Redis와 더불어 추가적으로 Redis 를 구축해두기로 했다.