본문 바로가기

전체 글234

[실전 레디스] Chaprter 09_메모리 관리 이번장에서는 메모리 관리 아키텍처, 메커니즘에 대해 알아보게 된다.운영하며 이슈가 발생하는 경우 원인 파악 그 외에도 메모리를 효율적으로 사용할 수 있게 된다. 메모리 관리 아키텍처레디스 서버는 메모리를 다음과 같은 형태로 사용한다. 레디스는 malloc 함수로 메모리를 할당하기 때문에 운영체제의 메모리 페이지 할당 매핑을 제어할 수 없도록 구현되어 있다.이게 중요한 이유는 레디스에서 데이터 삭제 명령어를 실행해도 확보된 메모리가 운영체제로 반환된다는 보장이 없기 때문이고, 실제 메모리 사용량인 RSS도 변하지 않기 때문이다. 즉, 메모리가 부족한 상태에서 키를 삭제해도 운영체제 관점에서는 메모리 여유 공간이 반영되지 않으므로 주의가 필요하다. 클라이언트에서 보낸 명령어는 레디스 서버의 클라이언트 쿼.. 2025. 7. 21.
[JPA] OSIV (Open Session In View) 1. 계기SpringBoot Application을 실행 후 아래와 같은 로그를 보게 되었다.그와 동시에 로그 레벨이 warning이라 내용을 살펴보았고, 그 중 spring.jpa.open-in-view 와 관련된 정리를 해보려고 한다.PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. .. 2025. 7. 18.
[코틀린 코루틴] 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.