Database 71

[실전 레디스] 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에 저장하고, 레디스는 그 앞단에 배치하는 형태로 사용 애플리케이션은 레디스에 데이터를 요청함요청된 데이터가 레디스 서버에 존재하는지, 유효 기간 내인지에 따라 처리 내용을 분기함 Read-Through 패턴지연 읽기 패턴의 변형과 같은 패턴데이터베이스에서 데이터를 읽어오는 작업을 애플리케이션에서 직접 처리할 필요 없음 (라이브러리 사용) 쓰기 관점 아키텍처Write-Through 패턴데이터 쓰기 작업을 할 때의 관점에서 접근한 아키텍처애플리케이션은 데이터베이스에 데이터를 저장함애플리케이션은 1번과 같은 데이터를 레디스 서버에도..

Database/Redis 2025.03.21

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

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

Database/Redis 2025.03.21

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

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다. 1. 트랜잭션명령어MULTI/EXECMULTI SET foo 10 INCR foo INCR foo GET fooEXEC트랜잭션을 감싸는 명령어선언된 명령어를 큐에 집어넣음 DISCARDMULTISET key1 "value1"SET key2 "value2"DISCARD # 트랜잭션을 취소하고 변경 사항 반영 안 됨 WATCHWATCH balance # balance 키 감시MULTIINCR balance # balance 증가EXEC # balance 값이 변경되지 않았다면 실행, 변경되었으면 실패CAS (Compare and Sweep)트랜잭션 종료 전에 대상이 된 키가 변경되면 트랜잭션의 전체 실행을 중지다시 수행해야 함 특징..

Database/Redis 2025.03.21

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

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. 파이프라인이전 요청의 응답을 기다리지 않고 새로운 요청을 보낼 수 있는 기능여러 명령어를 동시에 송신하여 RTT 절약 가능파이프라인 내 명령들은 실행순서가 보장됨mget/mset으로 수행할 수도 있으나, 파이프라인 기능을 사용하는 것이 더 범용적임간단하고 효율적복잡한 로직은 작성하기 어려움조건 분기 적용 불가원자적 수행 보증 불가 예시import redis# Redis 클라이언트 연결client = redis.StrictRedis(host='localhost', port=6379, db=0)# 파이프라인 시작pipe = client.pipeline()# 여러 명령어를 파이프라인에 추가pipe.set('key1', 'value1')pipe...

Database/Redis 2025.03.21

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

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. TTLexists mykeyttl mykeypttl mykeyexists: 키 존재 유무ttl: 키 남은 유효시간 확인 (초) expire mykey 30pexpire mykey 30000expireat mykey 1742539500pexpireat mykey 1742539500000persist mykeyexpire: 유효기간 설정 (n 초 후)pexpire: 유효기간 설정 (n 밀리초 후)persist: 만료시간 제거 (영구 저장) 2. 삭제del mykeyunlink mykeydel: 키 삭제unlink: 백그라운드에서 삭제 flushdbflushallflushdb: 현재 db의 데이터 모두 삭제flushall: 모든 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-2022083..

Database/Redis 2025.03.20