• 티스토리 홈
  • 프로필사진
    각수짱
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
  • 250x250
    반응형
각수짱
  • 프로필사진
    각수짱
    • 분류 전체보기 (118)
      • 쓰레기통 (1)
      • 네트워크 기초 (14)
      • 서버 관리 (7)
        • DB 서버 (2)
        • DNS 서버 (2)
        • WEB 서버 (3)
        • 오픈스택 (0)
      • 파이썬 (10)
      • 웹 서비스 (12)
        • django (3)
        • ELK (7)
      • AWS (12)
      • Kafka (0)
      • IaC (9)
      • docker (7)
      • k8s (3)
      • CICD (1)
      • Azure (4)
      • 블록체인 (1)
      • 네트워크엔지니어 (9)
      • 리눅스 (26)
        • 리눅스 기초 (11)
        • 리눅스 고급 (8)
        • 리눅스 마스터 1급 (7)
      • 마케팅 (1)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Redis(레디스)
        2023년 03월 27일
        • 각수짱
        • 작성자
        • 2023.03.27.:12
        728x90
        반응형
        SMALL

        Redis란?

        Redis (Remote Dictionary Server)는 오픈 소스의 인메모리 데이터 구조 저장소로, 다양한 데이터 구조를 지원하며 주로 캐시 서버로 사용. Redis는 고성능이며 빠른 속도를 자랑하고, 여러 프로그래밍 언어와 호환되는 클라이언트 라이브러리를 지원

        Redis의 주요 특징:

        1. 인메모리 저장소: 데이터를 메모리에서 저장하고 검색하므로 디스크 I/O를 피하고 빠른 성능을 제공
        2. 데이터 구조 지원: 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 구조를 지원
        3. 고성능: Redis는 높은 처리량과 낮은 지연 시간을 제공
        4. 데이터 지속성: Redis는 데이터를 디스크에 저장하고, 시스템 충돌이나 재시작 후에도 데이터를 복구 가능
        5. 레플리케이션: 데이터를 여러 서버에 복제함으로써 가용성과 안정성을 높임
        6. Pub/Sub: 발행/구독 패턴을 지원하여, 실시간 메시징 및 알림 시스템 구축이 가능
        7. Key-value 구조 비정형 데이터를 저장하고 관리
        8. 데이터를 디스크에 저장하는 기능(Snapshotting)도 가지고 있기 때문에 데이터 영속화도 가능
        9. Single Threaded를 사용하므로 한번에 하나의 명령만 수행이 가능하며 오랜시간이 걸리는 명령을 사용할 경우 장애가 발생
        10. 인 메모리 데이터베이스, 캐시 저장소 및 메시지 브로커로 사용되는 오픈 소스 프로그램 최고의 성능을 달성하기 위해 메모리 내 데이터 세트 와 함께 작동

        이 외에도 Redis는 스크립팅, 트랜잭션, 자동 파티셔닝 등 다양한 기능을 제공
        *캐시 : 한번 읽어온 데이터를 메모리에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 하는 공간

        카프카(Kafka) vs 레디스(Redis)

        항목 카프카(Kafka) 레디스(Redis)
        데이터 저장 디스크 기반 인메모리 기반
        사용 사례 메시지 큐, 이벤트 스트리밍, 로그 처리 캐싱, 세션 스토어, 실시간 알림, 메시지 큐 등
        성능 대량의 데이터 처리에 최적화, 높은 처리량 제공 빠른 응답 시간 제공, 낮은 지연 시간
        데이터 지속성 데이터를 디스크에 기록, 오래된 데이터도 조회 가능 인메모리 저장소이지만, 옵션에 따라 디스크에 저장 가능
        메시징 패턴 발행-구조(Pub/Sub), 로그 처리, 메시지 큐 발행-구독(Pub/Sub), 메시지 큐
        데이터 구조 메시지를 토픽에 저장, 순차적으로 처리 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 구조 지원
        확장성 분산 시스템, 가용성 및 내결함성 높음 수직/수평 확장 가능, 레플리케이션을 통한 가용성 제공

        카프카(Kafka) vs 레디스(Redis) 장단점

        카프카의 장점:

        • 대량의 데이터 처리에 최적화되어 높은 처리량을 제공
        • 디스크 기반으로 데이터를 저장하므로, 오래된 데이터도 조회 가능
        • 확장성이 높고, 분산 시스템으로 가용성 및 내결함성이 높음

        카프카의 단점:

        • 디스크 기반 저장소로 인해 Redis와 비교했을 때 응답 시간이 느림
        • 메시지 처리를 위한 복잡한 클러스터 구성이 필요함

        레디스의 장점:

        • 인메모리 저장소로 빠른 응답 시간과 낮은 지연 시간을 제공
        • 다양한 데이터 구조를 지원하여 다양한 사용 사례에 활용 가능
        • 데이터 지속성과 레플리케이션을 통해 가용성과 안정성을 제공

        레디스의 단점:

        • 인메모리 저장소로 인해 저장 용량이 제한적이며, 저장 공간이 부족하면 성능 저하 및 데이터 손실 위험이 존재합니다. 메모리 가격이 상대적으로 높기 때문에, 대량의 데이터를 저장하는데 비용이 많이 듬
        • 단일 스레드로 작동하기 때문에 CPU 코어를 최대한 활용하지 못하며, 이로 인해 다중 코어 시스템에서 성능 제한이 발생함
        • 인메모리 저장소의 특성상, 전원이나 하드웨어 오류에 의한 데이터 손실의 위험이 존재합니다. 데이터 지속성 옵션을 활성화할 수 있지만, 이 경우 일부 성능 저하가 발생함
        • 카프카에 비해 메시지 처리에 최적화된 구조는 아니기 때문에, 대용량의 메시지 처리에 비교적 더 어려움이 있음

        Redis 설치

        Stand Alone

        설치

        방화벽 해제

        systemctl stop firewalld.service
        systemctl disable firewalld.service
        setenforce 0

        레디스 다운로드

        yum -y install redis

        설정

        vi /etc/redis.conf
        bind 0.0.0.0

        레디스 재시작

        systemctl restart redis.service

        Replication

        마스터 설정

        vi /etc/redis.conf
        daemonize yes	
        min-replicas-to-write 1	최소 복제본 수
        min-replicas-max-lag 10	복제 성공 시간
        requirepass qwer1234	패스워드 설정

        슬레이브 설정

        vi /etc/redis.conf
        daemonize yes	
        replicaof  마스터IP 포트번호
        masterauth qwer1234
        replica-read-only yes

        확인

        마스터에서

        redis-cli
        auth qwer1234
        info REplication 하면 role: master 확인

        슬레이브에서

        redis-cli
        info Replication	하면 role: slave 확인

        장고에서 settings.py 수정

        ...
        SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
        CACHES = {
            'default': {
                'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        		
                'LOCATION': 'redis://redis:qwer1234@192.168.100.148:6379',
        	}
        }
        ...

        Cluster

        Sentinel 구성

        2023.03.27 - [웹 서비스] - Redis(레디스) - Sentinel 구성

         

        Redis(레디스) - Sentinel 구성

        Role Hostname IP Master server01 192.168.52.156 Slave server002 192.168.52.151 server03 192.168.52.152 server04 192.168.52.154 Sentinel server05 192.168.52.153 server06 192.168.52.155 server07 192.168.52.150 Sentinel 구성 마스터 설정 vi /etc/redis.c

        gaksu.tistory.com


        Redis 활용

        기본 사용법

        접속

        redis-cli -h [서버 IP]

        데이터 저장

        SET [Key] [Value]

        데이터 조회

        KEYS *

        데이터 삭제

        DEL [Key]

        로그인 세션 저장

        파이썬 터미널에서

        pip install django-redis
        pip install redis

        settings.py

        SESSION_ENGINE = "django.contrib.sessions.backends.cache"
        CACHES = {
            'default': {
                'BACKEND': 'django.core.cache.backends.redis.RedisCache',
                'LOCATION': 'redis://192.168.52.143:6379',
            }
        }

        이메일 인증 토큰 저장

        라이브러리 추가

         pip install django-allauth

        설정

        728x90
        반응형
        LIST
        저작자표시 (새창열림)

        '웹 서비스' 카테고리의 다른 글

        Redis(레디스) - Sentinel 구성  (0) 2023.03.27
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바