전체 글 520

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

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

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.1. 개요네임스페이스기본적으로는 전역에서 키를 관리데이터베이스 번호로 구분 가능 키 어노테이션각 키간 관계를 정의하여 트리거를 구현할 수 있음 2. String특징가장 간단한 타입 (key-value)이진 안전 문자열 용도문자열이진 데이터 (이미지, 실행파일 등) 용 숫자 (정수, 부동소수점 등) 활용카운터실시간 메트릭스캐시세션 / 쿠키이진 데이터 명령어1개 등록 / 읽기set foo barget foo# 맨 뒤에 붙이기append key value# 길이 읽기strlen keygetrange key 0 4 여러개 등록 / 읽기mset mykey1 myvalue1 mykey2 myvalue2 mykey3 myvalue3mget mykey1 my..

Database/Redis 2025.03.20