T_era

0. Redis 기본 개념 본문

이론/백엔드 개념정리

0. Redis 기본 개념

블스뜸 2025. 4. 30. 11:13

Redis(Remote Dictionary Server) : 데이터베이스 프로그램

- 비관계형 데이터베이스
- 고성능의 Key - Value 형식의 저장소
- 거대한 Map 데이터 저장소 형태를 가지고 데이터를 메모리에 저장하여 빠른 읽기/쓰기를 지원
- 주로 캐싱, 인증 관리, DB동시성 제어 등의 목적으로 사용
ex) 예로 특정 웹서버에 로그인을 시도했을 때 성공하면 인증값을 저장하고 사용자가 다시 웹서버에서 인증값만 가져와서 바로 로그인된다

특징
  * Key-Value로 구성된 단순화된 데이터 구조로 SQL 쿼리문이 불필요
  * 빠른 성능
     
- 인메모리 NoSQL 데이터베이스
        1. rdb는 기본적으로 disk에 저장하고 메모리에서 캐싱하는 것 그래서 redis가 훨씬 빠른 성능을 보인다
        2. redis의 메모리상 데이터는 주기적으로 스냅샷 디스크에 저장
        3. 그렇기 때문에 재부팅을 하는 등 메모리가 초기화가 되도 스냅샷 디스크에서 불러오는 방식으로 안정성을 높였다
        4. 결론 - 인메모리이기 때문에 성능이 빠르다
     - Key-Value는 구조적으로 해시테이블을 사용하기 때문에 매우 빠른 속도로 데이터 검색이 가능하다
        1. 해시테이블은 암호화 알고리즘을 통해 키값을 저장한다
        2. 해시값은 언제나 동일하게 저장되기 때문에 해시값을 기억해놨다가 접근할 때 바로 접근이 가능하다
  * Single Thread
        
1. 동시성 이슈가 발생하지 않는다
        2. 동시성 이슈란? 데이터에 여러 쓰레드가 접근하면서 예상치못한 문제가 발생하는 것
        3. 그럼 사용자를 1개씩 처리하게 되는데 성능저하가 발생하지 않을까라는 의문이 들 수도 있지만 앞에 이야기한 빠른성능의                구조 덕분에 Redis는 대규모 트래픽처리에 강점을 가지고 있다
         * 하지만 아무리 Redis가 데이터를 빠르게 처리해도 네트워크 대역폭이 부족하면 응답시간이 길어지고 성능저하가 발생할                 수 있다
  * 윈도우 서버에서는 지원하지 않고 리눅스, macOS등에서 사용가능

결론
 DB의 동시성 제어를 해결하면서 빠른 성능을 필요로하면 Redis를 사용하게된다

'이론 > 백엔드 개념정리' 카테고리의 다른 글

2. Redis String관련  (0) 2025.04.30
1. Redis에서 사용하는 자료구조  (0) 2025.04.30
Docker 명령어  (0) 2025.04.30
Docker??  (0) 2025.04.30
Apache Kafka란 무엇인가? 그리고 프로젝트 구상  (0) 2025.04.29