하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.
1. 캐시 노드 크기 조정
크기 조정 기준
레디스 클러스터
- 클러스터 필요 여부 판단
- 일반 레디스 서버만으로 충분한지 확인
- 사용중인 클라이언트가 레디스 클러스터를 지원하는 지 확인
- 클러스터를 사용하는 경우
- 쓰기 작업을 처리하는 경우
- 높은 가용성이 요구되는 경우
- 메모리 확장/축소가 필요한 경우
- 요구 사항
- 최소 3개의 캐시 노드를 마스터로 설정해야 함
요구사항 분석
- 처리해야 할 데이터 양
- 전체 데이터 양
- 최대 키 개수
- 키 당 평균 크기 및 최대 크기
- 성능 및 트래픽 분석
- 초당 처리해야 할 키 작업 수
- 네트워크 트래픽
- 실행되는 명령어 내역
샤딩 고려 사항
- 샤드 분배 전략 결정 (크게+적게 / 작게+많이 배치)
- String 형 이외의 자료구조는 샤딩하기 어려움 (특히 Hash 자료형 분산 어려움)
- 키 하나당 용량이 큰 경우 샤딩하기 어려움
- 적절한 노드 크기 설정
- 너무 작으면 네트워크 대역폭이나 처리량 초과 위험
- 일정 여유 공간을 확보해야 안정적 운영 가능
- 명령어의 시간복잡도를 고려하여 효율적으로 수행해야 함
클러스터 성능 확인
- 벤치마크 수행
- 각 노드의 최대 처리 가능 요청 개수 분석
- 운영 안정성 체크
- 헬스 체크 메시지 증가로 운영 불안정 가능성 고려
- 스케일 조정 결정
- 다양한 메트릭 정보를 참고하여 스케일 아웃/인을 결정하기
2. 설정 파일 (redis.conf)
- 각종 기능의 활성화 및 튜닝에 주로 사용됨
- config set / config get으로 설정
- config rewrite 설정 파일에 반영
지시자
카테고리 | 주요 지시자 |
네트워크 관련 |
bind (바인딩 IP 설정)
port (포트 설정) protected-mode (보안 모드. 접속이 로컬호스트만 가능함) timeout (클라이언트 연결 타임아웃) tcp-keepalive (TCP 연결 유지 설정. 클라이언트에 ACK를 보내는 간격) maxclients (최대 클라이언트 수) |
TLS 관련 |
tls-port (TLS 포트 설정)
tls-cert-file (서버 인증서 경로) tls-key-file (서버 키 파일 경로) tls-ca-cert-file (CA 인증서 경로) tls-auth-clients (클라이언트 인증 요구 여부) |
프로세스 관리 |
daemonize (백그라운드 실행 여부)
pidfile (PID 파일 경로) supervised (프로세스 감시 모드) logfile (로그 파일 경로) loglevel (로그 레벨) |
스냅숏 (RDB) 관련 |
save (스냅숏 주기 설정)
stop-writes-on-bgsave-error (스냅숏 오류 시 쓰기 중단 활성화) rdbcompression (RDB 압축 여부) rdbchecksum (RDB 체크섬 활성화) dbfilename (RDB 파일명) dir (데이터 저장 경로) |
AOF (Append Only File) 관련 |
appendonly (AOF 사용 여부)
appendfilename (AOF 파일명) appendfsync (동기화 모드) no-appendfsync-on-rewrite (리라이트 시 동기화 방지) auto-aof-rewrite-percentage (리라이트 트리거 비율) auto-aof-rewrite-min-size (리라이트 최소 크기) |
레플리케이션 관련 |
replicaof (마스터 설정)
masterauth (마스터 인증 정보) replica-serve-stale-data (구 데이터 제공 여부) replica-read-only (읽기 전용 모드) repl-diskless-sync (디스크 없는 동기화) repl-diskless-sync-delay (동기화 지연 시간) |
레디스 클러스터 관련 |
cluster-enabled (클러스터 모드 활성화)
cluster-config-file (클러스터 설정 파일) cluster-node-timeout (노드 응답 타임아웃) cluster-require-full-coverage (전체 슬롯 커버리지 요구 여부) |
ACL 기능 관련 |
aclfile (ACL 설정 파일)
requirepass (기본 인증 비밀번호) user (사용자별 권한 설정) |
클라이언트 추적 관련 |
tracking-table-max-keys (클라이언트 추적 키 개수 제한)
tracking (클라이언트 추적 활성화 여부) |
메모리 최대 사용량 관련 |
maxmemory (최대 메모리 사용량)
maxmemory-policy (메모리 부족 시 삭제 정책) |
동적 단편화 제거 관련 |
activedefrag (메모리 단편화 제거 활성화)
active-defrag-cycle-min (최소 단편화 제거 주기) |
그 외 메모리 관리 관련 |
lazyfree-lazy-eviction (LRU/LFU 키 제거 시 Lazy Free 적용 여부)
lazyfree-lazy-expire (만료된 키 Lazy Free 적용 여부) |
타이머 이벤트 관련 |
hz (타이머 이벤트 주기 설정)
dynamic-hz (주기 자동 조정 여부) |
Lazy Free 기능 관련 |
lazyfree-lazy-server-del (DEL 명령어 Lazy Free 적용 여부)
lazyfree-lazy-user-del (사용자 명령어 Lazy Free 적용 여부) |
멀티스레드 관련 |
io-threads (I/O 작업을 위한 스레드 개수)
io-threads-do-reads (읽기 작업 멀티스레드 활성화 여부) |
커널 OOM 관련 |
oom-score-adj (OOM 점수 조정)
oom-score-adj-values (OOM 점수 설정 값) |
커널 Transparent Huge Page |
THP-enabled (Transparent Huge Page 활성화 여부)
|
명령어 실행 타임아웃 설정 |
command-timeout (명령어 실행 시간 초과 제한)
|
슬로우 로그 관련 |
slowlog-log-slower-than (기록할 명령 실행 시간 기준)
slowlog-max-len (슬로우 로그 최대 저장 개수) |
지연 모니터 관련 |
latency-monitor-threshold (지연 감지 임계값)
|
지연 트래킹 기능 관련 |
latency-tracking-info-percentiles (지연 시간 백분위수 설정)
|
키 공간 알림 기능 관련 |
notify-keyspace-events (키 공간 이벤트 알림 설정)
|
내부 인코딩 기능 관련 |
hash-max-ziplist-entries (압축 리스트 최대 엔트리 개수)
list-max-ziplist-size (압축 리스트 최대 크기) |
CPU Affinity 관련 |
server-cpu-affinity (서버 CPU 코어 할당 설정)
|
셧다운 시 동작 관련 |
shutdown-save (셧다운 시 RDB 저장 여부)
shutdown-nosave (셧다운 시 RDB 저장 방지) |
'Database > Redis' 카테고리의 다른 글
[실전 레디스] 6-1. 트러블 슈팅: 서버 정보 (1) | 2025.03.23 |
---|---|
[실전 레디스] 5-4. 레디스 운용 관리: 관리 (0) | 2025.03.21 |
[실전 레디스] 5-2. 레디스 운용 관리: 아키텍처 (0) | 2025.03.21 |
[실전 레디스] 5-1. 레디스 운용 관리: 영속성 (0) | 2025.03.21 |
[실전 레디스] 3-2. 고급 기능: 주요 기능 (0) | 2025.03.21 |