🌚 부록
지난 시간에는 트랜잭션에 대해서 알아보았다. 트랜잭션은 4가지 특성을 가지고 있으며 이를 각각의 약자로 'ACID'로 표현한다. 정보처리기사를 따면서 이를 '원일격영'으로 외웠는데 원자성, 일관성, 격리성, 영속성으로 학습했었다. 데이터베이스는 그 중에서도 원자성과 영속성(=지속성)을 매우 중요시하며 영속성을 관리하기 위해 '로그'를 통해 Redo, Undo를 사용하는 것 까지 알아보았다. 오늘은 NoSQL의 한 종류인 Redis에 대해서 알아볼 것이며 이번부터는 실습을 통해 진행된다.
🐅 NoSQL
NoSQL이란 무엇일까? 한 줄로 요약하자면 관계형 데이터베이스가 아닌 모든 것들을 다 NoSQL이라고 한다. 또한 NoSQL은 종류도 어마어마하게 많다. 각각의 특성과 장단점이 모두 다르기 때문에 프로젝트마다 요구사항에 맞춰 정하는 것이 매우 중요하다.
그렇다면 왜 RDBMS만으로 부족해서 NoSQL까지 사용해야 할까? RDBMS의 단점은 데이터가 많아지면 많아질수록 속도가 현저하게 떨어진다는 단점이 있기 때문이다. 데이터가 1억 단위를 넘어간다고 할 경우 아무리 비트리 구조를 사용한다고 하더라도 부담되는 건 사실이기 때문이다. 따라서 이러한 RDBMS의 단점을 보완하기 위해 NoSQL을 보조로 사용하거나, 혹은 프로젝트에 따라 NoSQL을 사용하게 되었다. 위 이미지와 같이 NoSQL도 종류가 굉장히 많지만 우리가 오늘 알아볼 Redis는 Key-Value 타입이기 때문에 Key-Value 형태를 알아볼 것이다.
🐅 Redis
Redis는 우리가 C#에서 사용한 딕셔너리와 같이 Key-Value 타입으로 나누어져 있는데, 레디스를 한 줄 요약하자면 아래 이미지와 같다.
레디스는 기본적으로 In-Memory 방식을 사용하여 서버를 껏다 키면 기존에 있던 데이터가 모두 날라간다. 어떻게 보면 HW 측면으로 RAM과 동일하다. 따라서 레디스는 '실시간 점수 랭킹 시스템'과 같이 사소하거나 없어져도 문제가 되지 않는 애들을 서브 데이터베이스를 통해 사용하고 있다.
설치
https://github.com/tporadowski/redis/releases
깃허브 'tporadowski'로 들어가면 리눅스 상태에서 돌아가는 레디스를 윈도우 환경에서 돌아가도록 구현해놓은 분이 있다. 최신 버전을 다운로드 받아, 원하는 곳에 저장하고, 압축을 풀면 폴더 내 redis-server, redis-cli로 서버와 클라이언트가 있는 것을 볼 수 있다.
오늘은 간단하게 서버를 켜고, 클라이언트를 통해 헬로우 월드를 찍어주기만 하자.
위 이미지와 같이 서버를 더블 클릭해서 켜주고, 클라이언트에서 'set key1 "hello world"를 입력하면 OK가 뜬 것을 볼 수 있다. 여기서 key1에 접근하기 위해 get key1을 사용하면, 이전에 저장한 "hello world"가 뜨는 것을 볼 수 있다. 다음 시간 부터 레디스를 더 알아보는 시간을 가져보도록 하자.
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 5-4-7. 부록 : Redis 맛보기 #3 (0) | 2024.07.25 |
---|---|
Part 5-4-6. 부록 : Redis 맛보기 #2 (1) | 2024.07.24 |
Part 5-4-4. 부록 : 트랜잭션 (3) | 2024.07.22 |
Part 5-4-3. 부록 : 대기와 락 (1) | 2024.07.20 |
Part 5-4-2. 부록 : 쓰레드와 캐시 (2) | 2024.07.20 |