728x90
Redis란?
REDIS(Remote Dictionary Server)는 메모리 기반의 “키-값” 구조 데이터 관리 시스템이며,
모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비관계형 데이터베이스(NoSQL)이다.
레디스는 크게 5가지< String, Set, Sorted Set, Hash, List >의 데이터 형식을 지원한다.
Redis는 빠른 오픈 소스 인 메모리 키-값 데이터 구조 스토어이며, 다양한 인 메모리 데이터 구조 집합을 제공하므로 사용자 정의 애플리케이션을 손쉽게 생성할 수 있다.
Redis 특징
NoSQL로서 Key-Value 타입의 저장소인 Redis의 주요 특징은 아래와 같다.
- 영속성을 지원하는 인메모리 데이터 저장소
- 다양한 자료 구조를 지원함
- 싱글 스레드 방식으로 인해 연산을 원자적으로 수행 가능
- 읽기 성능 증대를 위한 서버 측 복제를 지원
- 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원
- 다양한 서비스에서 사용되며 검증된 기술
- 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원. 메모리 저장소임에도 불구하고 많은 데이터형을 지원하므로 다양한 기능을 구현
Redis의 영속성
Redis는 지속성을 보장하기 위해 데이터를 disk에 저장할 수 있다.
서버가 내려가더라도 disk에 저장된 데이터를 읽어서 메모리에 로딩한다.
| RDB (Snapshotting) 방식
- 순간적으로 메모리에 있는 내용을 disk에 전체를 옮겨 담는 방식
| AOF (Append On File) 방식
- Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태
Redis의 싱글 스레드
레디스는 Event Loop(이벤트루프)를 이용하여 요청을 수행한다.
즉, 실제 명령에 대한 작업은 커널 I/O 레벨에서 Multiplexing(멀티플렉싱)을 통해 처리하여 동시성을 보장한다.
따라서, 유저 레벨에서는 싱글스레드로 동작하지만, 커널 I/O 레벨에서는 스레드풀을 이용한다.
++ 맴캐시드 또한 메모리 객체 시스템인데, 멀티 스레드를 지원하고 스케일 업을 통해 다중 작업 처리가 가능하다. 또한, 맴캐시드는 문자열만 지원한다.
| 레디스가 싱글스레드인 4가지 이유
- CPU는 병목현상의 원인이 아니다.
- Redis의 병목현상의 대부분은 cpu가 아닌 시스템 메로리/네트워크 대역폭에서 발생
- 동시성 보장
- 이벤트 루프 패턴을 통해 동시성 구현하고, Context-Switch(문맥교환)가 없어 자원 절약
- 쉬운 구현 (프로그래밍 용이성)
- 쉬운 배포
- 최소 1개의 Core만 있어도 사용할 수 있기 때문에 배포 및 사용이 용이하다.
참고
| https://devlog-wjdrbs96.tistory.com/374
728x90
'Database' 카테고리의 다른 글
[MySQL] WITH, WITH RECURSIVE 사용법 (0) | 2022.10.10 |
---|---|
[DB] Transaction 트랜잭션 (0) | 2022.10.10 |
[DB] 정규화 & 비정규화 (0) | 2022.10.07 |
[DB] Index & B-Tree (2) | 2022.10.05 |
[DB] SQL vs NoSQL (4) | 2022.10.03 |