ABOUT ME

Today
Yesterday
Total
  • Redis란?
    프로그래밍 기초 공부 2022. 12. 31. 00:53

    Redis

    • Remote Dictionary Server
    • key- value 형태로 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 DBMS
    • DB, 캐시, 메세지 브로커로 사용
    • 인메모리 데이터 구조를 가진 저장소
    • 고성능 키-값 저장소로서 String, list, hash, set, sorted set 등의 자료 구조를 지원하는 NoSQL

     

    Redis 사용이유

    데이터 베이스가 있음에도 불구하고 Redis 즉, 인모메리 데이터 구조 저장소를 사용함
    DB는 데이터를 디스크에 직접 작성하여 서버에 문제가 발생하더라도 데이터 손실이 되지 않음
    하지만 매번 디스크에 접근해야 하기 때문에 사용자가 증가할 경우 부하가 많아져 느려질 수가 있음
    이렇게 DB 과부하가 될 수 있는 상황 떄문에 캐시 서버를 도입하여 사용함
    그리고 이 캐시 서버로 이용할 수 있는 것이 Redis

     

     

    특징

    • Key, Value 구조이기 때문에 쿼리 사용할 필요가 없음
    • 데이터를 디스크가 아닌 메모리에서 처리하여 속도가 빠름
    • 영속성을 지원하는 인 메모리 데이터 저장소
    • 다양한 자료 구조를 지원
    • 싱글 스레드 방식으로 인해 연산을 원자적으로 수행이 가능
    • 읽기 성능 증대를 위한 서버 측 리플리케이션을 지원
    • 쓰기 성능 증대를 위한 클라이언트 측 샤딩 지원
    • 다양한 서비스에서 사용되며 검증된 기술

     

     

    장점

    • 리스트, 배열과 같은 데이터를 처리하는데 유용
      • value 값으로 다양한 데이터 형식을 지원하기 때문
    • 리스트형 데이터 입력과 삭제가 MySql에 비해 10배정도 빠름
      • 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청하는 경우, 데이터 부정합 방지 Atomic 처리 함수를 제공
        • 원자성
    • 메모리를 활용하면서 영속적인 데이터 보존
      • 명령어로 명시적 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않음
      • 스냅샷 기능을 제공해 메모리 내용을 *.rdb 파일로 저장하여 해당 시점으로 복구가능
      • AOF : Redis의 모든 Wirte/Update 연산을 log 파일에 기록 후 서버 재시작 시 순차적으로 재실행, 데이터 복구
    • 1개의 싱글 쓰레드로 수행되기 때문에, 서버 하나에 여러개의 Redis Server를 띄울 수 있음

     

     

    Redis 주의점

    • 서버에 장애가 발생했을 경우 그에 대한 운영 플랜이 필요
      • 인메모리 데이터 저장소의 특성상, 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문
    • 메모리 관리가 중요
    • 싱글 스레드의 특성상, 한 번에 하나의 명령만 처리할 수 있음
      • 처리하는데 시간이 오래 걸리는 요청, 명령은 피해야 함

     

     

    Redis 사용 사례

    다른 데이터베이스 "앞"에 배치된 Redis는 성능이 뛰어난 인 메모리 캐시를 생성하여 액세스 지연 시간을 줄이고,
    처리량을 늘리며, 관계형 또는 NoSQL 데이터베이스의 부담을 줄여줌

     

    Redis는 세션 관리 작업에 매우 적합
    Redis를 세션 키에 대한 적절한 TTL과 함께 빠른 키 값 스토어로 사용하면 간단하게 세션 정보를 관리할 수 있음
    세션 관리는 주로 게임, 전자 상거래 웹 사이트, 소셜 미디어 플랫폼을 비롯한 온라인 애플리케이션에 필요

     

    Redis Sorted Set 데이터 구조를 사용하면 요소가 목록에 유지되고 점수에 따라 정렬됨
    이를 통해 손쉽게 동적 순위표를 생성하여 게임에서 앞서있는 사람이 누구인지 보여주거나, 좋아요를 가장 많이 받은 메시지를 게시하거나, 선두에 있는 사람이 누구인지 보여주려는 다양한 사례에 사용할 수 있음

     

    Redis는 이벤트 속도를 측정하고 필요한 경우 제한할 수 있음
    클라이언트의 API 키에 연결된 Redis 카운터를 사용하여 특정 기간 동안 액세스 요청의 수를 세고 한도가 초과되는 경우 조치를 취할 수 있음
    속도 제한기는 포럼의 게시물 수를 제한하고, 리소스 사용량을 제한하며, 스패머의 영향을 억제하는 데 주로 사용됨

     

    Redis List 데이터 구조를 사용하면 간단한 영구 대기열을 손쉽게 구현할 수 있음
    Redis List는 자동 작업 및 차단 기능을 제공하므로 신뢰할 수 있는 메시지 브로커 또는 순환 목록이 필요한 다양한
    애플리케이션에 적합

     

    Redis에서는 패턴 매칭과 더불어 PUB/SUB 표준을 지원
    따라서 Redis를 사용하여 고성능 채팅방, 실시간 코멘트 스트림 및 서버 상호 통신을 지원할 수 있음
    또한 PUB/SUB를 사용하여 게시된 이벤트를 기반으로 작업을 트리거할 수 있음

    '프로그래밍 기초 공부' 카테고리의 다른 글

    JUnit이란?  (0) 2023.01.03
    트랜잭션이란?  (0) 2022.12.31
    JWT란?  (0) 2022.12.26
    온프레미스 vs 클라우드  (0) 2022.12.26
    ORM이란?  (0) 2022.12.25
Designed by Tistory.