본문 바로가기

DataOps/Redis7

[Redis] 레디스 데이터 백업 방법 TL;DR- RDB와 AOF 두 가지 백업 방식을 지원한다.- 레디스 복구 시점은 재시작될 때뿐이며, AOF or RDB 존재하면 파일 로드한다. 데이터 영구 저장- 레디스 모든 데이터는 메모리에서 관리된다.- 장애로 인스턴스가 재시작되면 데이터가 손실될 수 있다.- 가용성을 위한 복제 구조이지만 백업과 복제는 목적부터 다르다는 것을 알아야한다.(복제는 가용성, 백업은 장애 상황에서 데이터 복구)   - 의도하지 않게 데이터를 삭제하는 커맨드가 실행되는 경우는 데이터를 안전하게 유지할 수 없음 AOF, RDBAppend Only File- 처리한 모든 쓰기 작업을 차례대로 기록- 복원 시에는 파일을 다시 읽어가며 데이터 세트 재구성- RESP 형태로 저장- 파일 크기가 크고 주기적으로 압축 필요하지만 원.. 2024. 6. 2.
[Redis] 레디스를 메시지 브로커로 사용하기 메시지 브로커의 필요성- 여러 모듈이 서로 느슨하고 적절하게 연결시킨 구조를 선호하는데, 이떄 탄탄한 상호작용이 필요해 메시지 브로커를 필요로 한다.- 서비스 간 커넥션이 실패하는 상황은 언제나 발생할 수 있으며, 되도록 비동기 통신하는 것을 권장한다.- 메시지를 어딘가에 쌓아 둔 뒤 나중에 처리할 수 있는 채널을 만들어 주는 것, 이것이 메시지 브로커의 핵심 역할이다. 메시지 브로커 타입1. 메시징 큐- Producer: 데이터를 생성하는 쪽- Consumer: 데이터를 수신하는 쪽  2. 이벤트 스트림- Publisher: 데이터 생성- Subscriber: 데이터 조회 이벤트 큐 vs 이벤트 스트림1. 방향성- 메시지 큐는 생산자가 소비자 큐로 데이터를 직접 푸시. 2곳에서 필요하면 생산자는 2곳으.. 2024. 5. 27.
[Redis] 5장. 레디스를 캐시, 세션으로 사용하기 TL;DR레디스는 캐시, 세션 용도로 사용되며 캐시는 데이터 저장소의 서브 셋, 세션은 정해진 시간동안 저장되는 정보라는 차이점이 있다.레디스는 평균 읽기 및 쓰기 작업 속도가 1ms이기 때문에 성능 개선이가능하며, 데이터베이스 커넥션 I/O 를 줄여 CPU, 메모리 리소스를 줄일 수 있다.장애 대응 기능을 갖춘 고가용성 솔루션이며, 스케일 아웃을 지원한다.캐시데이터의 원본보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소효과적인 케이스원본 데이터 저장소에서 원하는 데이터를 찾기 위해 검색하는 시간이 오래 걸리거나, 매번 계산을 통해 데이터를 가져오는 것쓰기보다 읽기에 특화된 데이터인 경우캐시에 저장된 데이터가 잘 변하지 않는 데이터인 경우캐시에 저장되는 데이터가 자주 검색되는 데이터인 경우.. 2024. 5. 8.
[Redis] 4장. 레디스 자료 구조 활용 사례 실시간 리더보드배경리더보드: 경쟁자들의 순위와 현재 점수를 보여주는 순위표절대적 리더보드모든 유저를 정렬시켜 상위권만 표시하는 것을 absolute leaderboard 라고 함상대적 리더보드사용자마다 다른 데이터를 보여줌구로 직장인 대상 순위필요상대적 리더보드의 경우 다양한 관점에서 데이터 계산하고 통계 내야하기 때문에 여러 가지 수학적 계산이 빠르게 수행되어야 함관계형 데이터베이스 사용할 경우 항상 정렬해서 가져와야 한다.해결Sorted set 은 항상 정렬해서 저장하기 때문에 매번 정렬할 필요가 없다.ZUIONSTORE로 스코어 합한할 수 있음특정 SET 에 가중치 줄 수 있음최근 검색 기록배경최근 검색 기록유저별로 다른 키워드 노출검색 내역은 중복 제거가장 최근 검색한 5개 키워드만 사용자에게 노.. 2024. 5. 5.
[Redis] 3장. 레디스 기본 개념 TL;DRRedis는 range 검색할 때 end index 를 포함함String최대 512MBBinary-safe 하게 처리되어 이ㅁ지 같은 바이트 값 등 다양한 데이터 저잦ㅇ 가능key-아이템 1대1 연결되는 유일한 자료 구조 → 나머지 자료 구조를 보면 된다커맨드SETOptionsNX: 키 없는 경우XX: 키 이미 있는 경우GETINCR, INCRBY, DECR, DECRBY원자적으로 처리 가능Race condition 방지타이밍 순서에 따라 요청 무시됨SET hello wolrdGET helloList순서를 가지는 문자열 목록최대 12억개스택, 큐로 사용된다특징LPUSH, RPUSH, LPOP, RPOP 커맨드는 당연 O(1)인덱스 들어가면 O(n)커맨드추가LPUSH, RPUSHLINSERT데이터.. 2024. 5. 5.
[Redis] 1장. 마이크로서비스 아키텍처, NoSQL, 레디스 개발자를 위한 레디스 책 공부NoSQL 등장개요소프트웨어의 핵심은 데이터이며, 데이터 저장소는 애플리케이션의 성능과 확장성, 가용성, 신뢰성과 직접적으로 연관을 갖는다.트렌드가 마이크로서비스 아키텍처로 변화하면서 데이터 저장소 특징 역시 다양하게 발전하고 있다.Monolith vs Microserivces모놀리틱 아키텍처단일 모듈로 구성된 아키텍처 (모든 기능이 하나의 서버에 몰려있다)작은 규모에 적합단점하나의 모듈 수정하면 전체 다시 빌드 및 배포 → 빌드 시간 늘어남트래픽, 트랜잭션 요구사항에 유연하게 대처 불가프레임워크, 언어 변경이 전체 애플리케이션에 영향 끼침작은 기능 변경하는 것도 민첩하게 대처하기 어렵다. 업데이트와 릴리즈가 느려짐마이크로서비스 아키텍처.. 2024. 4. 17.
SLASH 23 - 실시간 시세 데이터 안전하고 빠르게 처리하기 (Redis Pub/Sub) TR;DR - Kafka 대신 Redis pub/sub 사용함 (카프카가 지연시간 길었음) 2023. 10. 10.