본문 바로가기

전체 글238

[코틀린 코루틴] 24장 - 공유플로우와 상태플로우 공유플로우(SharedFlow)SharedFlow: 이벤트 스트림을 여러 수집자에게 브로드캐스팅하는 플로우 특징여러 수집자가 동시에 값을 수집할 수 있음수집자가 없어도 값을 방출할 수 있음버퍼링과 리플레이 기능 제공완료나 예외를 공유하지 않음 아래는 브로드캐스트 채널과 비슷한 MutableSharedFlow 이다.공유플로우를 통해 메시지를 보내면 대기하고 있는 모든 코루틴이 수신하게 된다. replay = 0 이라는 의미는 새로운 수집자에게 이전 값을 보내지 않는다.즉, 수집자(각 launch의 collect)가 구독한 시점 이후에 내보내지는 값만 받게 된다.아래 두 개의 코루틴이 동시에 같은 SharedFlow를 구독하게 되며, 각각 #1, #2로 구분되어 출력된다.suspend fun main(): .. 2025. 7. 14.
[실전 레디스] Chaprter 08_레디스 클러스터 8.1 레디스 클러스터 기능 개요레디스 클러스터란?레디스 클러스터는 여러 레디스 인스턴스를 하나의 논리적 단위로 묶어 수평적 확장(horizontal scaling)을 지원하는 분산 시스템 주요 특징자동 샤딩(Auto Sharding): 16,384개의 해시 슬롯으로 데이터를 자동 분산고가용성: 마스터 노드 장애 시 자동 페일오버확장성: 노드 추가/제거를 통한 동적 확장 데이터 일관성: 강력한 일관성 모델 제공 클러스터 vs 센티넬목적수평 확장 + 고가용성고가용성 (모니터링 + 페일오버)데이터 분산자동 샤딩복제 기반최소 노드 수6개 (마스터 3 + 슬레이브 3)3개 (센티넬 노드) 8.2 레디스 클러스터 장애 탐지장애 탐지 메커니즘메커니즘 레디스 클러스터는 고시프 프로토콜(Gossip Protocol)을.. 2025. 7. 14.
[실전 레디스] Chaprter 07_레플리케이션 레디스의 레플리케이션과 메커니즘을 알아보는 시간 데이터 레플리케이션: 쓰기 작업이 있을 때마다 업데이트된 데이터를 다른 서버로 복제하는 것 위 방식을 통해 얻을 수 있는 것서버 추가 및 리소스 확장하여 읽기 쿼리의 부하 관리데이터 중복성을 통한 페일오버로 가용성 얻을 수 있음 7.1 레플리케이션 기능단일 노드 방식은 장애나 네트워크 연결 문제, 시스템 충돌 같은 문제에 쉽게 영향을 받는다.따러서 실제 운영에서는 다중 노드로 구성하여 가용성을 확보한다. 레디스는 여러 노드로 운영하기 위한 레플리케이션 기능을 제공하고 있다. 마스터-레플리카 모델에서는 지속적으로 마스터의 업데이트 내용을 여러 레플리카에 반영하는데, 이 방식은 RDBMS에서 사용하는 방식과 유사하다. 레플리케이션의 목적은 '읽기 작업 확.. 2025. 7. 7.
[실전 레디스] Chaprter 06_트러블 슈팅 1. INFO 명령어로 서버 정보 읽기레디스 트러블슈팅의 첫 번째 단계는 현재 서버 상태를 정확히 파악하는 것이다. INFO 명령어는 레디스 서버의 전반적인 상태 정보를 제공하는 가장 기본적이면서도 강력한 도구이다.기본 사용법# 전체 정보 조회redis-cli INFO# 특정 섹션만 조회redis-cli INFO memoryredis-cli INFO statsredis-cli INFO replication주요 섹션별 정보Server 섹션redis_version: 레디스 버전uptime_in_seconds: 서버 가동 시간tcp_port: 포트 번호Memory 섹션used_memory_human: 사용 중인 메모리 (사람이 읽기 쉬운 형태)used_memory_peak: 최대 메모리 사용량maxmemory.. 2025. 7. 1.
[실전 레디스] Chaprter 05_레디스 운용 관리 데이터 영속성레디스는 인메모리 데이터베이스의 특성상 기본적으로 모든 데이터를 메모리에서 처리한다.따라서 서버가 재시작되면 데이터가 유실될 수 있다. 레디스에는 영속성을 위한 설정이 있지만, 영속성 관련 기능을 모두 활성화하는 것은 권장하지 않는다. 트레이드오프를 고려하여 적절한 영속성 전략을 짜는 것이 중요하다. 레디스는 스냅숏과 AOF를 통해 데이터의 영속성을 보장한다.위 두 가지 방법을 조합해서 아래 네 가지 방식으로 영속성 전략을 짤 수 있고, 이 방법으로 백업 생성도 가능하다.1) 스냅숏2) AOF3) 스냅숏 + AOF4) 영속성 사용하지 않음 AOF의 디폴트 값: 비활성화 스냅숏의 디폴트 값1시간 내에 최소 하나 이상의 키가 변경되는 경우5분 내에 최소 100개 이상의 키가 변경되는 경우1분 내.. 2025. 6. 23.
[실전 레디스] Chaprter 04_레디스를 활용한 애플리케이션 작성 레디스는 다양언 언어를 지원하는 클라이언트 라이브러리를 가지고 있다.이 장에서는 여러 클라이언트 소개 및 일부 언어를 통해 클라이언트를 사용하는 방법을 배울 수 있도록 하고 있다. 다양한 언어를 지원하는 레디스 https://redis.io/docs/latest/develop/clients/ Connect with Redis client API librariesConnect your application to a Redis database and try an exampleredis.io 레디스는 주요 언어 뿐만 아니라 많은 환경을 지원하고 있다. 레디스 공식 문서에 나열된 것만 해도 50개가 넘는다. 레디스 클라이언트를 선택할 때는 다음과 같은 사항이 고려되어야한다.물론 아래 내용은 레디스 외 다른 .. 2025. 6. 16.