Database/Redis 13

[실전 레디스] 6-1. 트러블 슈팅: 서버 정보

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 문제 발생 시, 먼저 문제를 구분하기특정 명령어만 느려지는지특정 캐시 노드에서만 문제가 발생하는지특정 클라이언트에서만 문제가 발생하는지지속적으로 발생하는 문제인지발생 빈도는 어느정도인지 1. 서버 정보 읽기INFO 명령어: 엔진 내부 상황 확인 Serverredis_version:7.0.11redis_mode:standaloneos:Linux 5.4.0-110-generic x86_64uptime_in_seconds:86400uptime_in_days:1항목설명redis_versionRedis 버전redis_mode실행 모드 (standalone / cluster / sentinel)os운영 체제 정보process_idRedis 서버의 프로세..

Database/Redis 2025.03.23

[실전 레디스] 5-4. 레디스 운용 관리: 관리

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 보안신뢰할 수 없는 환경에서 레디스에 접근할 때 사용자 접근 제한 기능을 제공함 설정네트워크 보안bind 127.0.0.1 192.168.1.100bind 지시자로 접속 호스트 제한 tls-enabled yestls-cert-file /etc/redis/redis.crttls-key-file /etc/redis/redis.keytls-ca-cert-file /etc/redis/ca.crt-------------------------------------redis-cli --tls -h my-secure-redis.comtls 통신 지원클라이언트에서 --tls 옵션으로 접속 필요 protected-mode yes보호 모드루프백 인터페이스와..

Database/Redis 2025.03.21

[실전 레디스] 5-3. 레디스 운용 관리: 셋팅

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 캐시 노드 크기 조정크기 조정 기준레디스 클러스터클러스터 필요 여부 판단일반 레디스 서버만으로 충분한지 확인사용중인 클라이언트가 레디스 클러스터를 지원하는 지 확인클러스터를 사용하는 경우쓰기 작업을 처리하는 경우높은 가용성이 요구되는 경우 메모리 확장/축소가 필요한 경우요구 사항최소 3개의 캐시 노드를 마스터로 설정해야 함 요구사항 분석처리해야 할 데이터 양전체 데이터 양최대 키 개수키 당 평균 크기 및 최대 크기성능 및 트래픽 분석초당 처리해야 할 키 작업 수네트워크 트래픽실행되는 명령어 내역 샤딩 고려 사항샤드 분배 전략 결정 (크게+적게 / 작게+많이 배치)String 형 이외의 자료구조는 샤딩하기 어려움 (특히 Hash 자료형 분..

Database/Redis 2025.03.21

[실전 레디스] 5-2. 레디스 운용 관리: 아키텍처

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 레디스 아키텍처원본 데이터는 RDBMS에 저장하고, Redis는 그 앞단에 캐시로 배치 읽기 관점항목Lazy-loading 패턴 (Cache-aside)Read-Through 패턴Redis에 데이터 없을 때애플리케이션이 DB에서 읽고 Redis에 저장라이브러리가 DB에서 읽고 Redis에 저장장점자주 쓰는 데이터만 캐시에 저장됨애플리케이션 코드가 단순해짐단점첫 요청이 느림캐시 로딩 로직을 직접 구현해야 함특정 클라이언트/미들웨어에 의존하게 됨적용 예시Spring + Redis 조합 (직접 로직 작성)RedisTemplate + Spring Cache 추상화 쓰기 관점항목Write-Through 패턴Write-Back 패턴Write-Aro..

Database/Redis 2025.03.21

[실전 레디스] 5-1. 레디스 운용 관리: 영속성

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. 데이터 영속성인메모리 데이터베이스레디스는 기본적으로 인메모리 데이터베이스이므로 서버가 재시작되면 데이터가 유실될 수 있음 영속성 지원레디스를 데이터 저장소처럼 데이터 영속성을 전제로 운영할 수 있음 (옵션 제공) 성능 vs 내구성영속성을 설정하면 성능에 영향을 줄 수 있으므로, 적절한 트레이드 오프를 고려해야 함성능과 내구성의 타협점을 찾고 설정하는것을 권장함 전략 설정 필요시스템 요구사항에 맞는 영속성 설정을 선택하여 운영해야 함 2. 스냅숏특정 시점의 데이터베이스 내용을 RDB라는 형식의 파일로 저장파일을 복원하는 형태로 데이터 재사용이 가능함기본적으로 설정된 영속성 방법 저장 방식방식실행 방식특징동작 방식권장 여부SAVE동기블로킹 발..

Database/Redis 2025.03.21

[실전 레디스] 3-1. 고급 기능: 주요 기능

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 트랜잭션특징트랜잭션 안의 명령: MULTI 이후 → 실행 안 되고 큐에 저장됨 (DELAYED 실행)읽기 명령: 트랜잭션 바깥 → 즉시 실행됨 (IMMEDIATE 실행)롤백 지원 X (실패한 명령어 건너뛰고 남은 작업을 계속 처리함) 명령어명령어설명MULTI트랜잭션 시작. - 이후 입력되는 명령어들을 큐에 저장함 (즉시 실행 X)EXEC트랜잭션 종료- MULTI로 큐에 저장된 명령어들을 순차 실행DISCARD트랜잭션 중 큐에 저장된 모든 명령어를 취소하고 트랜잭션 종료WATCH특정 키 감시. - EXEC 전까지 해당 키가 다른 클라이언트에 의해 수정되면 EXEC가 실패함→ CAS(Compare And Swap) 패턴 구현 가능 예제) M..

Database/Redis 2025.03.21

[실전 레디스] 3-2. 고급 기능: 루아

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. 파이프라인이전 응답을 기다리지 않고 여러 요청을 한꺼번에 서버에 보내는 방식항목설명사용 목적성능 최적화대체 가능 기능MGET, MSET과 유사 (단, 파이프라인이 더 범용적)장점- 실행 순서 보장- RTT(Round Trip Time) 절약단점- 조건 분기 불가- 복잡한 로직 작성 어려움- 원자성 보장 안 됨 예시더보기import redis# Redis 클라이언트 연결client = redis.StrictRedis(host='localhost', port=6379, db=0)# 파이프라인 시작pipe = client.pipeline()# 여러 명령어를 파이프라인에 추가pipe.set('key1', 'value1')pipe.set('key2..

Database/Redis 2025.03.21

[실전 레디스] 2-4. 자료형과 기능: 공통 명령어

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. TTL확인더보기exists mykeyttl mykeypttl mykeyexists: 키 존재 유무ttl: 키 남은 유효시간 확인 (초)설정더보기expire mykey 30pexpire mykey 30000expireat mykey 1742539500pexpireat mykey 1742539500000expire: 유효기간 설정 (n 초 후)pexpire: 유효기간 설정 (n 밀리초 후) 삭제더보기persist mykeypersist: 만료시간 제거 (영구 저장) 2. 삭제단위 삭제더보기del mykeyunlink mykeydel: 키 삭제unlink: 백그라운드에서 삭제 전체 삭제더보기flushdbflushallflushdb: 현재 db의..

Database/Redis 2025.03.21

[실전 레디스] 2-3. 자료형과 기능: 보조 기능

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. Pub/Sub발행자가 구독자에게 메시지를 보내는 패턴자료형이 아닌 기능 형태로 제공됨 요소구독자관심있는 주제에 대해 하나 이상의 채널을 구독할 수 있음 발행자특정 채널을 지정하여 이 채널을 통해 메시지를 발행함 명령어구독subscribe mychannel1unsubscribe mychannel1psubscribe my*punsubscribe my*ssubscribe shd1sunsubscribe shd1ssubscribe: 샤드 ID로 구독 발행publish mychannel1 "Hello, World!"spublish shd1 "Hello, World!"spublish: 샤드 ID로 발행 상태 확인pubsub channelspubsub..

Database/Redis 2025.03.21

[실전 레디스] 2-2. 자료형과 기능: 보조 자료형

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.보조 자료형은 모든 자료형에서 사용될 수 있음 1. Bitmap현재 처리하고 있는 데이터 모델을 비트로 표현함내부적으로 String 형으로 정의되어 있음 (type 명령어로 확인 가능) 장점메모리를 아낄 수 있음 (단, 희소한 상태가 되면 낭비가 심해 비효율적임)여러 키로 분해하여 샤딩하기 용이함 명령어생성setbit visitor:20220829 100 1setbit visitor:20220829 200 1setbit visitor:20220830 400 1 읽기getbit visitor:20220829-20220830 100bitcount visitor:20220829-20220830bitpos visitor:20220829-20220830..

Database/Redis 2025.03.20