Redis : 오픈 소스 인메모리 데이터 구조 저장소로
주로 캐시, 메세지 브로커, 데이터베이스 등 다양한 용도로 사용된다.
빠른 성능과 다양한 데이터 구조를 지원하므로 많은 애플리케이션에서 전반적인 성능을 향상시킬 수 있따.
인메모리 데이터 저장 : Redis는 모든 데이터를 메모리에 저장하여 매우 빠른 읽기/쓰기 성능을 제공하기 때문에 응답 시간이 중요한 애플리케이션에서 유용하다.
데이터 구조 지원 : Redis는 단순한 키-값 저장소뿐만 아니라 문자열, 해시, 리스트, 세트, 비트맵, 하이퍼로그로그 등 다양한 데이터 구조를 지원한다.
지속성 옵션 : 기본적으로 인메모리 데이터베이스지만, 디스크에 데이터를 저장할 수 있기 때문에 데이터의 지속성을 보장할 수 있다.
복제 및 고가용성 : Redis는 마스터-슬레이브 복제를 통해 데이터를 복제하고, Redis Sentinel을 사용하여 고가용성을 유지할 수 있다.
트랜잭션 : Redis는 멀티 명령어 트랜잭션을 지원하며, 모든 명령어는 원자적으로 실행된다. MULTI, EXEC, DISCARD, WATCH 명령어를 사용하여 트랜잭션을 관리할 수 있다.
스크립팅 : Lua 스크립트를 사용하여 서버에서 실행할 수 있으며, 이를 통해 복잡한 연산을 원자적으로 수행할 수 있다.
퍼포먼스 : 싱글 스레드로 작동하지만, 이벤트 루프와 비동기 I/O를 통해 높은 성능을 유지한다. 여러 인스턴스를 통해 멀티코어 환경에서도 효과적으로 사용할 수 있다.
확장성 : Redis Cluster를 사용하면 여러 노드에 걸쳐 데이터를 자동으로 분할하고 재배치하여 확장성을 제공한다.
웹 애플리케이션의 캐싱 : 웹 서비스에서 데이터베이스 쿼리 결과를 캐싱하여 데이터베이스 부하를 줄이고 응답 시간을 단축할 수 있다. 예를 들어, 사용자의 프로필 정보나 인기 있는 게시물 목록 등을 레디스에 캐시하여 매번 데이터베이스에서 읽지 않고 빠르게 제공한다.
세션 저장소 : 웹 애플리케이션에서 사용자의 로그인 상태나 세션 정보를 저장하는 데 레디스를 활용한다. 사용자가 로그인하면 세션 토큰과 함께 사용자 정보를 레디스에 저장하고, 로그아웃할 때 이 정보를 삭제하는 식으로 사용할 수 있다.
실시간 분석 : 실시간으로 발생하는 이벤트 데이터나 로그 데이터를 레디스에 저장하고 처리할 수 있다. 예를 들어, 서비스의 클릭스트림 데이터를 레디스에 저장하고 실시간으로 분석하여 사용자 행동 패턴을 분석하거나 실시간 대시보드에 반영할 수 있다.
메시지 큐 : 레디스의 Pub/Sub 기능을 이용하여 메시지 큐 시스템을 구축할 수 있다. 다수의 서버나 마이크로서비스 간의 메시지 전달이나 이벤트 기반 아키텍처에서 유용하게 사용된다.
리더보드 : 게임이나 경쟁적 요소가 있는 서비스에서는 사용자의 점수나 순위를 저장하고 실시간으로 업데이트하는 데 레디스를 활용할 수 있다.