2025/03/21 8

[실전 레디스] 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