
1. NoSQL
Redis의 개념을 알기 위해선 먼저 NoSQL에 대한 개념을 알아야한다. NoSQL이란, 'Not only SQL'의 약자로, JSON 형태로 저장되는 데이터베이스를 말한다. NoSQL을 처음 들어본 사람들은 ' SQL을 쓰지 않는 데이터베이스인가?' 라며 혼동되기도 한다.
또한, NoSQL은 RDBMS가 커버하지 못하는 기능을 제공하기도 한다. 한 가지 예로 'Flexible Schema'를 제공한다. Flexible Schema란, 영단어 뜻에서도 알 수 있듯이 스키마에 대해 유연성을 제공해주는 기능이다.
예를 들어, RDMS에서 '학생'이라는 스키마를 정의한다면, 학생ID(pk), 이름은 varchar, 나이, 학년은 int, 입학일자는 date 등, 제한된 스키마를 정의해야한다. 하지만 NoSQL에서의 학생 스키마는 철수, 영희 등 각각의 스키마를 적용할 수 있으며, 스키마별로 새로운 항목을 추가할 수 있다.
// RDBMS '학생' schema
CREATE TABLE Student {
id VARCHAR(255) PRIMARY KEY,
name VARCHAR(255) ,
age INTEGER ,
grade INTEGER ,
enter_date TIMESTAMP
}
// NoSQL Flexible Schema
// '철수' 스키마
{
id : '2011-001'.
name : "김철수",
age : 17,
grade : 1,
enter_date : "2011/03/02"
}
// '영희' 스키마
{
id : '2009-001'.
name : "김영희",
age : 19,
grade : 3,
enter_date : "2009/03/02",
favorite_subject : "Math"
}
2. Redis
Redis는 먼저 데이터를 'Key-Value' 즉, JSON 형태로 저장하는 오픈소스 NoSQL 데이터베이스이다. 또한, 모든 데이터를 '메모리'에 저장하고 조회하는 '인메모리' 데이터베이스 솔루션이다. Redis는 데이터를 'RAM'에 저장하기 때문에, 저장 및 조회 속도가 매우 빠르다.
3. Redis의 정보 및 특징
1) 영속성을 지원하는 인메모리 데이터베이스
2) 읽기 성능 증대를 위한 서버 측 복제를 지원한다.
3) 쓰기 성능 증대를 위한 클라이언트 측 샤딩을 지원한다.
(샤딩 : 대규모 데이터베이스를 여러 머신에 저장하는 데이터 처리 기법)
4) Redis는 대부분 언어와 포팅되어 있다. (Java, Python, C, C++ 등)
5) 많은 서비스에서 사용되며, 성능적으로 검증된 솔루션이다.
6) 문자열, 리스트, 해시, 셋, 정렬된 셋 등 다양한 자료구조를 지원한다. 다양한 기능을 구현할 수 있다.
4. 정리
Redis를 한마디로 정리하자면, '고성능 Key-Value 저장소로서 문자열, 리스트, 셋 등 다양한 자료구조를 지원하는 NoSQL이다.'
Cf. Redis VS 멤캐시드
먼저, Redis와 멤캐시드의 공통점은 데이터를 메모리에 저장하여 빠른 읽기/쓰기 성능을 제공한다는 점은 같다.
하지만, Redis는 NoSQL이며 즉, '데이터베이스'이다. 멤캐시드는 데이터베이스가 아니다. 동적 웹 서비스의 DB 부하를 덜어주는 '고성능 분산 메모리 객체 캐싱 시스템' (어후 길다^^;) 이다.
다음 포스팅에는 실제 Redis를 설치해보고 간단하게 사용해보는 글을 써보겠다.
'웹 개발 공부 : Back-end > Redis' 카테고리의 다른 글
[Redis] Redis 맛보기 - 2 (Redis 지원 자료구조 및 관련 명령어) (0) | 2024.09.10 |
---|---|
[Redis] Redis 맛보기 - 1 (설치 및 기본설정) (0) | 2024.09.09 |

1. NoSQL
Redis의 개념을 알기 위해선 먼저 NoSQL에 대한 개념을 알아야한다. NoSQL이란, 'Not only SQL'의 약자로, JSON 형태로 저장되는 데이터베이스를 말한다. NoSQL을 처음 들어본 사람들은 ' SQL을 쓰지 않는 데이터베이스인가?' 라며 혼동되기도 한다.
또한, NoSQL은 RDBMS가 커버하지 못하는 기능을 제공하기도 한다. 한 가지 예로 'Flexible Schema'를 제공한다. Flexible Schema란, 영단어 뜻에서도 알 수 있듯이 스키마에 대해 유연성을 제공해주는 기능이다.
예를 들어, RDMS에서 '학생'이라는 스키마를 정의한다면, 학생ID(pk), 이름은 varchar, 나이, 학년은 int, 입학일자는 date 등, 제한된 스키마를 정의해야한다. 하지만 NoSQL에서의 학생 스키마는 철수, 영희 등 각각의 스키마를 적용할 수 있으며, 스키마별로 새로운 항목을 추가할 수 있다.
// RDBMS '학생' schema
CREATE TABLE Student {
id VARCHAR(255) PRIMARY KEY,
name VARCHAR(255) ,
age INTEGER ,
grade INTEGER ,
enter_date TIMESTAMP
}
// NoSQL Flexible Schema
// '철수' 스키마
{
id : '2011-001'.
name : "김철수",
age : 17,
grade : 1,
enter_date : "2011/03/02"
}
// '영희' 스키마
{
id : '2009-001'.
name : "김영희",
age : 19,
grade : 3,
enter_date : "2009/03/02",
favorite_subject : "Math"
}
2. Redis
Redis는 먼저 데이터를 'Key-Value' 즉, JSON 형태로 저장하는 오픈소스 NoSQL 데이터베이스이다. 또한, 모든 데이터를 '메모리'에 저장하고 조회하는 '인메모리' 데이터베이스 솔루션이다. Redis는 데이터를 'RAM'에 저장하기 때문에, 저장 및 조회 속도가 매우 빠르다.
3. Redis의 정보 및 특징
1) 영속성을 지원하는 인메모리 데이터베이스
2) 읽기 성능 증대를 위한 서버 측 복제를 지원한다.
3) 쓰기 성능 증대를 위한 클라이언트 측 샤딩을 지원한다.
(샤딩 : 대규모 데이터베이스를 여러 머신에 저장하는 데이터 처리 기법)
4) Redis는 대부분 언어와 포팅되어 있다. (Java, Python, C, C++ 등)
5) 많은 서비스에서 사용되며, 성능적으로 검증된 솔루션이다.
6) 문자열, 리스트, 해시, 셋, 정렬된 셋 등 다양한 자료구조를 지원한다. 다양한 기능을 구현할 수 있다.
4. 정리
Redis를 한마디로 정리하자면, '고성능 Key-Value 저장소로서 문자열, 리스트, 셋 등 다양한 자료구조를 지원하는 NoSQL이다.'
Cf. Redis VS 멤캐시드
먼저, Redis와 멤캐시드의 공통점은 데이터를 메모리에 저장하여 빠른 읽기/쓰기 성능을 제공한다는 점은 같다.
하지만, Redis는 NoSQL이며 즉, '데이터베이스'이다. 멤캐시드는 데이터베이스가 아니다. 동적 웹 서비스의 DB 부하를 덜어주는 '고성능 분산 메모리 객체 캐싱 시스템' (어후 길다^^;) 이다.
다음 포스팅에는 실제 Redis를 설치해보고 간단하게 사용해보는 글을 써보겠다.
'웹 개발 공부 : Back-end > Redis' 카테고리의 다른 글
[Redis] Redis 맛보기 - 2 (Redis 지원 자료구조 및 관련 명령어) (0) | 2024.09.10 |
---|---|
[Redis] Redis 맛보기 - 1 (설치 및 기본설정) (0) | 2024.09.09 |