- Redis(레디스)2023년 03월 27일 09시 12분 28초에 업로드 된 글입니다.작성자: 각수짱728x90반응형SMALL
Redis란?
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 활용
기본 사용법
접속
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 이전글이 없습니다.댓글