Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다. 레디스는 모든 데이터를 메모리에 저장하고 조회하며 다른 DB와 달리 다양한 자료구조를 제공한다. (String, Bitmaps, Bit filed, Hashes, Lists, Sets, Sirted Sets 등)
이렇게 다양한 자료구조를 사용 할 수 있게되면 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.
NoSQL로 Key - Value 타입으로 데이터를 저장하는 레디스의 주요 특징은 아래와 같다.
- 영속성을 지원하는 인메모리 데이터 저장소이다.
- 읽기 성능을 증대하기 위한 서버 측 복제를 지원한다.
- 쓰기 성능을 증대하기 위한 클라이언트 측 Sharding을 지원한다.
- 문자열, 해쉬셋, 리스트 등 다양한 자료구조를 지원하기 때문에 다양한 기능 구현이 가능하다.
다만, 인메모리 데이터베이스이기 때문에 서버에 장애가 발생할 경우에 대한 운영 플랜이 필요하며(데이터가 유실 될 수 있기 때문에) 메모리 관리가 중요하고 싱글 스레드 특성상 한번에 하나의 명령만 처리가 가능하기 때문에 시간이 오래 걸리는 작업은 피해야 함.
기존 mysql 같은 db들은 데이터를 물리 디스크에 직접 쓰기 때문에 데이터가 손실 될 위험이 적지만 그만큼 매번 디스크에 접근해야해서 사용자가 많아질수록 부하가 많이 걸리는데 이럴 때 Redis와 같은 db를 캐시 서버로 사용하여 빠르게 작업을 처리할 수 있도록 지원.