[CS] Redis

  1. Redis?
    1. Remote Dictionary Server : 메모리 기반의 key-value 구조 데이터 관리 시스템
    2. 비관계형 데이터베이스
    3. String, Set, Sorted Set, Hash, List 데이터 형식 지원

** 인메모리 데이터베이스가 빠른 이유 ?

→ 컴퓨터의 주 메모리에 데이터를 저장하는 방식으로, 기존의 보조기억장치를 사용하는 데이터베이스에 비해 빠름

→ 중앙처리장치(CPU)는 주 메모리에 저장된 데이터에 직접 접근이 가능하고 그 때문에 훨씬 더 빠르게 주 메모리의 데이터를 읽고 쓸 수 있음.

 

2. 특징

  1. 영속성을 지원하는 인메모리데이터베이스
  2. Single Threaded이기 때문에 한 번에 하나의 명령만 처리할 수 있음 (하지만 get, set 명령어의 경우 초당 10만개 이상 처리할 수 있을 만큼 빠름)
  3. 읽기 성능 증대를 위한 서버 측 복제 지원
  4. 쓰기 정능 증대를 위한 클라이언트 측 샤딩(sharding) 지원
  5. → 샤딩 ? :: 동일한 스키마를 가지고 있는 여러대의 데이터베이스 서버들에 데이터를 작은 단위로 나누어 분산 저장하는 기법

3. Redis의 영속성 : 데이터를 디스크에 저장함으로써 서버가 내려가더라도 디스크에 저장된 데이터를 읽어 메모리에 로딩

  1. RDB(snapshotting) 방식 : 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
  2. AOF(Append On File) 방식 : Redis의 모든 wirte/update 연산 자체를 모두 Log 파일에 기록하는 방식

4. Redis의 활용 방법

  1. 캐싱(Caching) : 캐싱이란 데이터베이스나 파일 시스템 등의 느린 데이터 저장소에 대한 엑세스를 줄이고, 더 빠른 데이터 엑세스를 위해 데이터를 메모리에 저장하는 것을 의미
    1. 레디스를 이용한 캐싱은 웹사이트나 애플리케이션에서 데이터베이스 쿼리 등의 불필요한 엑세스를 줄이고, 빠른 응답 속도를 제공할 수 있음
  2. 세션 저장(Session Storage) : 세션은 웹 어플리케이션에서 사용자 상태를 유지하기 위한 방법. 레디스를 이용하면 다수의 서버에서 엑세스할 수 있는 세션 데이터를 공유할 수 있으며 애플리케이션의 확장성을 높일 수 있음
  3. 메시지 큐(Message Queue) : 메세지 큐는 비동기적인 메시지 처리를 지원하는 소프트웨어 패턴으로, 레디스는 pub/sub 기능을 이용하여 메시지 큐를 구현할 수 있으며, 높은 처리량과 낮은 지연 시간을 제공할 수 있음
  4. 실시간 채팅
  5. 랭킹(Ranking) : 레디스는 sorted set (점수와 멤버로 구성된 데이터 구조) 타입을 지원하며, 이를 이용하여 사용자나 상품 등의 랭킹을 구현할 수 있음
  6. 세션 토큰 저장 : 토큰은 보안 인증 시스템에서 사용되며, 인증된 사용자를 구별하고 유효성을 검증하는데 사용됨. 레디스를 이용하면 다수의 서버에서 토큰 데이터를 공유하고 보안성을 높일 수 있음
  7. 분산 락(Distributed Lock) : 분산 락은 다수의 서버에서 동시에 엑세스하는 데이터에 대해 동기화를 유지하기 위해 사용되며, 레디스를 이용하면 다수의 서버에서 안전하게 데이터를 엑세스 할 수 있으며 동시성 문제를 해결할 수 있음

5. Redis 사용시 주의할 점

  1. 서버에 장애가 발생했을 경우 그에 대한 플랜이 반드시 필요
  2. → 인메모리 데이터베이스의 경우 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문
  3. 메모리 관리가 필요
  4. 싱글 스레드의 특성상, 한번에 하나의 명령만 처리할 수 있기 떄문에 처리하는데 시간이 너무 오래 걸리는 요청은 지양해야 함.

'CS > Database' 카테고리의 다른 글

[CS] 저장 프로시저(Stored Procedure)  (0) 2023.11.01
[CS] 트랜잭션의 격리 수준 (Transaction Isolation Level)  (1) 2023.11.01
[CS] 트랜잭션 (Transaction)  (0) 2023.11.01
[CS] 정규화  (1) 2023.11.01
[CS] 이상, 인덱스  (1) 2023.10.23