
Redis는 Key-Value 기반의 인-메모리 데이터 저장소

상단은 데이터별 저장 구조에 대해 그림으로 표현된 것이며, 하단은 Redis의 다양한 데이터 구조에 대한 표로 데이터와 정의, 간단한 설명입니다.
| Number | Structure | definition | Simple description |
|---|---|---|---|
| 1 | String | 단순한 키-값 매핑 구조 | - |
| 2 | Lists | Array형식의 데이터 구조 | List 사용 시, 처음과 끝의 데이터를 넣고 빼는 것은 속도가 빠르지만, 중간에 데이터 삽입 시 어려움 존재 |
| 3 | Sets | 순서가 없는 Strings 데이터 집합 | Sets에서는 중복된 데이터는 하나로 처리하기 때문에, 중복에 대한 걱정 No |
| 4 | Sorted Sets | Sets와 동일 구조(Score를 통해 순서를 정할 수 있음) | Sorted Sets를 사용하면 Leaderboard와 같은 기능 구현 가능 |
| 5 | Hashes | 키-값의 구조를 여러개 가진 object 타입을 저장하기 좋은 구조 | - |

위의 사진과 같이 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지며, 난이도가 낮아진다는 커다란 장점이 생깁니다.
예를 들어
어떤 데이터를 정렬하는 상황 시, DMBS를 활용하면 DB에 데이터 저장, 저장된 데이터 정렬 후 다시 읽어오는 과정은 디스크에 직접 접근해야하기 때문에 시간 소요가 오래 걸린다는 단점을 가지고 있습니다. 이러한 경우, In-Memory 데이터베이스인 Redis를 이용하고 레디스에서 제공하는 Sorted-Set이란 자료 구조를 활용하면 더 빠르게 데이터 정렬이 가능합니다.
최종적으로 Redis를 한 문장으로 정의하면
고성능 키-값 저장소로 리스트, 해시, 문자열, 셋 해시, 정렬된 셋 형식의 데이터를 지원하는 NoSQL이다.
그렇다면 Redis는 어떻게 관리하는 것일까?

Redis는 Singer threaded가 대표적인 특징으로 상단의 그림에서 왼쪽에 위치해있습니다.
Redis 서비스 운영 시, Redis 서버의 메모리가 한계에 도달할 수 있지만, 메모리의 한계는 maxmemory값으로 설정이 가능합니다.
또한, maxmemory 수치까지 메모리가 다 차는 경우, Redis는 maxmemory policy에 따라서 추가 메모리를 확보할 수 있습니다.
▣ maxmemory-policy 설정값
레디스는 지속성을 보장하기 위하여 데이터를 Disk에 저장합니다. 따라서, 서버가 다운되더라도 Disk에 저장된 데이터를 읽어서 메모리에 로딩합니다.
Redis에서 데이터를 Disk에 젖아하는 방식은 크게 두 가지로 분류됩니다.

1. RDB(Snapshotting) 방식
- 순간적으로 메모리에 있는 내용을 Disk에 전체를 옮겨 담는 방식
참조
1. Dayone님의 Branch / Redis 기본 정리 / 2020.7.19
2. Redis-Wikipedia
3. 우아한테크세미나 by 강대명님
4. rmcodestar git블로그