- Redis(레디스)2023년 03월 27일
- 각수짱
- 작성자
- 2023.03.27.:12
728x90반응형SMALLRedis란?
Redis (Remote Dictionary Server)는 오픈 소스의 인메모리 데이터 구조 저장소로, 다양한 데이터 구조를 지원하며 주로 캐시 서버로 사용. Redis는 고성능이며 빠른 속도를 자랑하고, 여러 프로그래밍 언어와 호환되는 클라이언트 라이브러리를 지원
Redis의 주요 특징:
- 인메모리 저장소: 데이터를 메모리에서 저장하고 검색하므로 디스크 I/O를 피하고 빠른 성능을 제공
- 데이터 구조 지원: 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 구조를 지원
- 고성능: Redis는 높은 처리량과 낮은 지연 시간을 제공
- 데이터 지속성: Redis는 데이터를 디스크에 저장하고, 시스템 충돌이나 재시작 후에도 데이터를 복구 가능
- 레플리케이션: 데이터를 여러 서버에 복제함으로써 가용성과 안정성을 높임
- Pub/Sub: 발행/구독 패턴을 지원하여, 실시간 메시징 및 알림 시스템 구축이 가능
- Key-value 구조 비정형 데이터를 저장하고 관리
- 데이터를 디스크에 저장하는 기능(Snapshotting)도 가지고 있기 때문에 데이터 영속화도 가능
- Single Threaded를 사용하므로 한번에 하나의 명령만 수행이 가능하며 오랜시간이 걸리는 명령을 사용할 경우 장애가 발생
- 인 메모리 데이터베이스, 캐시 저장소 및 메시지 브로커로 사용되는 오픈 소스 프로그램 최고의 성능을 달성하기 위해 메모리 내 데이터 세트 와 함께 작동
이 외에도 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)