레디스를 이용하는 장점은 아래와 같다.
- 리스트, 배열과 같은 데이터를 처리하는데 유용하다.
-
value 값으로 문자열, 리스트, Set, Sorted set, Hash 등 여러 데이터 형식을 지원.
-
따라서 다양한 방식으로 데이터를 활용할 수 있다.
-
리스트형 데이터 입력과 삭제가 MySQL에 비해서 10배정도 빠르다고 한다.
- 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우,
- Atomic 처리로 데이터 부정합 방지 Atomic처리 함수를 제공(원자성을 잘 지킨다)
- 메모리를 활용하면서 영속적인 데이터 보존
-
명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다.
-
스냅샷(기억장치) 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장하여 해당 시점으로 복구할 수 있다.
- Redis Server는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여러개의 서버를
띄우는 것이 가능하다.
-
Master - Slave 형식으로 구성이 가능함
-
데이터 분실 위험을 없애주는 것이 바로 위 Master - Slave 방식이다.
그렇다면 우리는 대체 언제 레디스를 쓰고 언제 몽고를 써야 하는가? 둘 간의 유의한 차이점은 무엇인가?Redis
심플의 극치를 달리는 형식으로, 키-밸류 스토어를 사용한다. 관계형 데이터베이스와는 아주 다른 형태로 NoSQL을 처음 쓴다면 헷갈릴수도 있다. 그렇지만 플과일 : "사과" 와 같은 모를래야 모를 수 없는 키와 값이 따라오는 구조와 바보도 알 수 있는 GET 과일 > 사과 와 같은 직관적 명령어로 러닝 커브는 그리 높지 않을 것이다.
세컨더리 인덱싱이 가능하다. Sorted set을 이 인덱스를 만들어서 이용할 수 있다. 이외에도 다양한 인덱싱이 가능하다.
인메모리 DB이다.
JSON-like 문서형 스키마프리 데이터 구조를 갖췄기 때문에, 일정히 미리 정해진 양식 따위는 없다. 관계형 데이터베이스의 많은 기능을 구현하고 있는데, 쿼리 랭귀지와 일관성에서는 관계형 데이터베이스와 아주 유사하다.
인덱스 없이는 속도가 느려지므로 인덱스를 꼭 만들자.
디스크-메모리 맵 파일이다. 인덱스는 램안에 있다.
그렇다면 언제 Redis를 쓰고 언제 Mongo를 쓰는가? 팀 내 개발자들이 몽고를 더 많이 할 줄 알 때? 아니다. 어플리케이션이 무엇을 요구하는지에 따라 골라쓰면 된다.
예를 들어 쿼리를 많이 써야 하면 Mongo를 쓰는게 더 좋을 것이다. Redis를 쓰면 많은 개발자의 고통이 따르겠지만 Mongo는 같은 쿼리를 좀 더 쉽게 이용할 수 있을 거다. 그렇지만 속도만이 모든것이라고 하면 Redis도 좋은 선택이 될 것이다.
몽고가 좀 더 심플하고 낮은 러닝커브(이미 RBMS 를 깨나 쓴다 하는 개발자들에게만!) 를 제공한다고 한다면 레디스는 아주 유연하다고 생각할 수 있다. 이것 둘 중 하나를 고르는 일은 나같은 사람에게는 권외의 일 같지만 많은 포스트에서 이 둘을 흥미롭게 잘 비교해 주었다.
'Data > Nosql' 카테고리의 다른 글
Redis 연구노트 (0) | 2019.07.08 |
---|---|
redis 우분투 기본 명령어 (0) | 2019.06.20 |
Firebase와 Netty를 이용한 채팅서버의 차이? (0) | 2019.03.22 |