REDIS

문딤·2022년 10월 12일
0

REDIS 란?

Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)이다.

데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소이다.

  • db-engines.com 에서 key, value 저장소 중 가장 순위가 높습니다.

REDIS의 특징

◻ 오픈 소스 소프트웨어이다.

◻ 디스크가 아닌 메모리 기반의 데이터 저장소이다.
(In-Memory data structure store)

◻ NoSQL & Cache 솔루션이며 메모리 기반으로 구성된다.

◻ 명시적으로 삭제, Expire를 설정하지 않으면 데이터는 삭제되지 않는다.
(= 영구적 보존)

◻ 여러대의 서버 구성 가능하다.

◻ 데이터베이스로 사용될 수 있으며 Cache로도 사용될 수 있는 기술이다.

◻ 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행한다.

◻ 데이터 저장소로 입력/출력이 가장 빠른 메모리를 채택

◻ 단순한 구조의 데이터 모델인 Key-Value 방식을 통한 빠른 속도

◻ 캐시 및 데이터 스토어에 유리

◻ 다양한 API 지원

💨 서비스 요청이 증가하여 DB요청이 많아지면, DB서버 부하가 증가.
이 때 메모리캐시가 적용되면 성능 및 처리 속도가 향상된다.

인메모리 데이터 구조

인메모리란 컴퓨터의 메인 메모리 RAM에 데이터를 올려서 사용하는 방법을 말한다.
메모리에 데이터를 올리는 이유는? => 속도때문이다.
SSD, HDD같은 무거운 저장공간보다 RAM에 올려진 데이터를 가져오는데 걸리는 속도가 수백배 빠르기 때문이다. 때문에 Redis는 빠른 속도가 큰 장점이다.

빠른 속도를 자랑하는 대신 용량이 작아서 메인DB로서는 무리가 있다.

REDIS의 장단점

장점단점
자체적인 Primary, Secndary Failover.메모리 사용량이 더 많음
Slot 단위의 데이터 관리Migration 자체는 관리자가 시점을 결정해야함
Library 구현이 필요함

REDIS의 동작 원리

📍 인스턴스에 정상적으로 접속을 했다면, 명령어 전달을 통해 데이터를 저장, 조작가능하다. 해당 데이터는 모두 메모리에 상주한다.

📍📍 resident Area는 명령어를 통해 실제 데이터가 저장 및 작업을 수행하는 공간,
초록색은 내부적으로 서부 상태를 저장, 관리하는 Data Structure 영역이다.

📍📍📍 메모리는 휘발성이므로 프로세스 종료시 모두 유실됨. => persistence 저장소로 활용하기 위해서는 디스크에 저장하여 데이터 유실이 없도록 해야한다.

◻ AOF, RDB 기능으로 데이터 유실 관리.
◻ AOF의 역활은 RDMS의 REDO처럼 재기동시 파일에 기록된 명령어를 일괄 수행, 복구한다. => 데이터 유실이 없지만, FILE과의 동기화때문에 처리속도가 많이 줄어든다.
◻ RDB는 AOF에 비해 부하가 적으며, LZF 압축을 통해 파일 압축이 가능하다.

REDIS 복제

장애 발생시 단일 인스턴스로만 구성되어있다면, APPLICATION에 영향을 끼칠것이다.

또한, Redis를 운영하는 입장에서 버전 업그레이드 혹은 서버 PM 작업이 필요하나 Application 영향도로 인해 섯불리 작업할 수 없는 문제가 생긴다.

마지막으로, 캐시 목적으로 사용하는 Redis는 쓰기 작업보다는 읽기 작업이 주로 발생한다. 따라서 읽기 작업 성능을 높힐 수 있는 아키텍처 구성이 필요할 수 있다.

+@ 은 Master/Replica의 구조

관심 기능

redis publish /subscibe

https://123okk2.tistory.com/345

redis non-blocking I/O

https://hyperconnect.github.io/2019/11/15/redis-distributed-lock-1.html

https://way-be-developer.tistory.com/m/274

참고

https://www.happykoo.net/@happykoo/posts/40

https://cla9.tistory.com/101

https://wildeveloperetrain.tistory.com/21

profile
풀스택개발자가 될래요

0개의 댓글