본문 바로가기
CS 공부/데이터베이스

레디스(Redis) 란?

by 횰쓰 2022. 7. 23.

Redis란 무엇일까?

 

-> Redis(REmote Dictionary Server)

 

보통 데이터베이스는 데이터를 하드 디스크나 SSD에 저장한다. 하지만 Redis는 데이터를 메모리(RAM)에 저장하는 인메모리 데이터베이스(In-Memory)로서 디스크 스캐닝이 필요없어 매우 빠른 장점이 존재한다. 

이 말만 들으면 Redis의 가장 큰 특징이 모든 데이터를 메모리에 저장하는 빠른 DB가 다라고 생각할지도 모른다.

 

하지만, 빠른 성능은 Redis의 특징 중 일부분이고, 다른 인메모리 데이터베이스들과의 가장 큰 차이점은

"다양한 자료구조" 이다. 데이터 구조는 key/value 값으로 이루어져있다. 

 

Value가 될 수 있는 데이터의 형식은 5가지이다. 

  1. String (text, binary data) - 512MB까지 저장이 가능함
  2. Set (String 집합)
  3. Sorted set (set을 정렬해둔 상태)
  4. Hash
  5. List (양방향 연결리스트도 가능)

 

 

예를 들어.. 어떤 데이터를 정렬해야하는 상황이 있을 때,

 

→ DBMS를 이용한다면 DB에 데이터를 저장하고, 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 더 걸린다는 단점이 있다.

하지만 이 때 인메모리 데이터베이스인 Redis를 이용하고 Redis에서 제공하는 Sorted-Set이라는 자료구조를 사용하면 더 빠르고 간단하게 데이터를 정렬할 수 있다.

 

 

 

 

Redis는 고성능 키-값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식의 데이터를 지원하는 NoSQL이다.

 

 

 

SQL과 NOSQL의 차이

웹/앱 개발을 할 때 데이터베이스를 선택하게 된다. MySQL과 같은 SQL을 사용할까? 아니면 MongoDB와 같은 NoSQL을 사용할까? 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용한

hyolls100.tistory.com


 

Redis 간단한 실습

 

brew install redis (Mac Redis 설치)
redis-server (Redis Server 실행)
redis-cli (Redis Client 접속)

brew services start redis (Redis 서비스 실행)

flushAll (Redis 모든 Key 삭제)

 

Set 명령어

 

  • set key value 의 문법으로 작성한다. ex) set key "hello" (key-value를 저장할 때 사용)
  • get key(key에 저장된 value를 꺼낼 때 사용)

 

Append 명령어

 

  • append는 key1 value 뒤에 문자열을 추가할 수 있게 해준다.

 

Sadd/Smembers 명령어 (Set)

 

  • sadd 명령어를 통해서 Set 자료구조를 저장할 수 있다.
  • smembers 명령어를 통해서 Set 자료구조를 출력한다. (순서가 뒤죽박죽으로 나오는 것을 알 수 있다.)

 

Zadd/Zrange 명령어 (Sorted Set)

 

  • zadd 명령어를 통해서 가중치-값으로 지정한다.
  • zrange 명령어를 통해서 출력 범위를 지정할 수 있다. (-1 이면 뒤에서 부터 시작)

 

Hset/HgetAll 명령어 (HashMap)

 

 


 

Redis 영속성

 

Redis는 데이터를 메모리에 저장하므로 Redis가 내려가면 메모리 상에 있던 데이터는 모두 유실된다. 

따라서, 이를 막기위한 백업 과정이 존재한다.

 

Redis는 지속성을 보장하기 위해 데이터를 디스크에 저장할 수 있다. 서버가 내려가더라도 디스크에 저장된 데이터를 읽어서 메모리에 로딩한다. 

 

데이터를 디스크에 저장하는 방식은 크게 두 가지 방식이 있다. 

 

  • RDB(Snapshotting) 방식 : 특정 지점을 설정하고 순간적으로 메모리에 있는 내용을 디스크에 백업하는 방식
  • AOF(Append On File) 방식 : 명령(쿼리)들을 저장해두고 (write/update 연산 자체를 모두 로그파일에 기록하고) 서버가 셧다운되면 재실행하는 방식

 

 

[Redis] AOF 파일의 저장 방식

Redis AOF 란 레디스는 데이터를 메모리에 저장합니다. 레디스가 내려가면 메모리 상에 있던 데이터는 모두 유실됩니다. 이 유실을 방지하기 위해 AOF 기능을 제공하고 있습니다. AOF 는 Append Only File

mozi.tistory.com

 

'CS 공부 > 데이터베이스' 카테고리의 다른 글

이상현상 (Anomaly)  (0) 2022.07.16
SQL과 NOSQL의 차이  (0) 2022.07.10

댓글