redis.conf를 알아보자!

Karim·2021년 12월 21일
8

Redis 운영

목록 보기
3/7
post-thumbnail

1. Version

💬

  • OS : CentOS Linux release 7.9.2009 (Core)
  • Redis : 6.0.7

2. redis_port.conf

💬 네트워크 설정

  • bind 127.0.0.1
    default : 127.0.0.1

    redis가 bind할 interface 설정이다.

  • protected-mode
    default : yes

    bind 설정된 ip만 접속 가능하게 설정하는 모드

  • port
    default : 6379

    해당 redis가 잡고 올라가는 port 설정

  • tcp-backlog
    default : 511

    redis 서버의 초당 클라이언트 연결 개수이다.

  • timeout
    default : 0

    클라이언트에서 서버에 접속할 때 timeout 값이다.
    0일 시 항상 connection을 열어둔다.

  • tcp-keepalive
    default : 300

    클라이언트가 죽었을 때 redis 서버가 확인해서 클라이언트와의 접속을 제거하는 시간이다.

💬 일반 설정

📌

  • requirepass
    default : ""

    redis 서버에 password를 설정

  • daemonize
    default : no

    redis 서버를 데몬으로 실행 여부 설정

  • supervised
    default : no

    Systemd 또는 upstart로 레디스 서버를 시작했을 때 사용하는 파라미터입니다.

  • pidfile
    default : /var/run/redis_6379.pid

    pid 경로 및 파일명 설정

  • loglevel
    default : notice

    로그 레벨 설정
    debug > verbose > notice > warning 순서

  • logfile
    default : ""

    log 경로 및 파일명 설정

  • databases
    default : 16

    redis 여러 개의 DB를 가질 수 있다.
    DB 번호를 0부터 설정한 개수 만큼 DB를 갖는다.
    redis에서 DB는 서로 다른 키 공간이다.
    클러서터 모드에서는 데이터베이스가 하나만 존재한다.

  • always-show-logo
    default : yes

    redis가 시작될 때 ASCII 로고를 보여준다.

💬 스냅샷 설정

📌

  • save
    default : ""

    메모리에 있는 전체 데이터를 디스크에 저장하는 옵션
    save <seconds> <changes>
    지정된 시간 동안 지정된 개수 이상의 키가 변경되면 DISK 저장

  • stop-writes-on-bgsave-error
    default : yes

    RDB 스냅샷 그닝이 활성화 되어 있다면 BGSAVE가 실패하면 레디스 서버는 쓰기 명령을 받아들이지 않는 설정

  • rdbcompression
    default : yes

    RDB 파일로 덤프할 때 텍스트 부분을 압축하여 파일 사이즈를 줄인다.

  • rdbchecksum
    default : yes

    RDB 파일이 손상되어있는지 확인하는 기능이다.

  • dbfilename
    default : dump.rdb

    RDB 파일 이름 설정

  • rdb-del-sync-files
    default : no

    redis 서버를 재 기동 하거나 전체 동기화 후 동기화에 사용된 RDB 파일을 삭제 유무를 설정하는 옵션

  • dir
    default : ./

    dbfilename로 설정해준 rdb 파일이 저장되는 dir 경로

💬 복제 설정

  • replica-serve-stale-data
    default : yes

    복제 서버가 마스터와 연결이 끊겼을 때 클라이언트 요청 응답 유무 설정

  • replica-read-only
    default : yes

    복제 서버에 조회 전용 여부 설정

  • repl-diskless-sync
    default : no

    전체 데이터 동기화 방식 선택
    no -> 디스크
    yes -> 소켓

  • repl-diskless-sync-delay
    default : 5

    소켓 복제의 경우 여러 복제 요청을 한번에 처리할 수 있도록 전송 시작 시간 설정

  • repl-diskless-load
    default : disabled

    RDB 파일을 만들지 않고 복제 방법 선택
    [ disabled | on-empty-db | swapdb ]
    on-empty-db : 복제서버에 키가 없을 경우 diskless 기능을 사용하지 않습니다. 데이터가 있으면 rdb 파일을 생성
    swapdb : 복제서버에 키 여부와 상관없이 diskless 로 동작

  • repl-disable-tcp-nodelay
    default : no

    마스터와 슬레이브 같 전체 동기화가 될 때 데이터를 모아서 큰 패킷으로 전송할 지 여부 설정

  • replica-priority
    default : 100

    마스터가 다운되었을 때 슬레이브가 여러 대 있으면 어느 서버가 마스터가 될지 우선순위를 설정하는 옵션
    숫자가 적을 수록 우선순위가 높다.
    0 : 특별한 값으로 마스터가 되지 않도록 하는 값

💬 LAZY FREEING 설정

  • 레디스에서 키(데이터)를 삭제하는 방식

    DEL: 명령이 실행되면 바로 데이터를 삭제
    UNLINK: 명령이 실행되면 일단 키는 지우고 남은 맴버는 별도 쓰레드인 LAZY_FREE에서 삭제

  • lazyfree-lazy-eviction
    default : no

    yes 시 키를 삭제할 때 UNLINK를 사용

  • lazyfree-lazy-expire
    default : no

    yes 시 expired 키를 삭제할 때 UNLINK를 사용

  • lazyfree-lazy-server-del
    default : no

    yes 시 RENAME 명령어 사용할 시 키를 삭제할 때 UNLINK를 사용
    RENAME : 기존 키와 값을 삭제하고 키 이름을 변경

  • replica-lazy-flush
    default : no

    yes 시 전체 동기화 시 복제 서버는 자신이 기존에 가지고 있는 모든 데이터를 Flushall async로 지운다.

💬 APPEND ONLY MODE 설정

📌

  • appendonly
    default : no

    aof 파일 추가 사용 여부 설정
    무~~조건 yes

  • appendfilename
    default : appendonly.aof

    aof 파일 이름 설정

  • no-appendfsync-on-rewrite
    default : no

    aof 재 작성이나 rdb파일 저장 중 많은 디스크 I/O가 발생한다. fsync()가 실행되면 지연이 발생할 수 있다.
    이 때 yes로 설정하면 AOF/RDB 파일 저장 중에는 fsync()를 실행하지 않는다.

  • auto-aof-rewrite-percentage
    default : 100

    aof 파일 재 작성하는 최소 크기 퍼센트 설정이다.
    작은 파일이 자주 재 작성되는 것을 막을 수 있다.

  • auto-aof-rewrite-min-size
    default : 64mb

    aof 파일 재 작성하는 최소 크기 설정이다.
    작은 파일이 자주 재 작성되는 것을 막을 수 있다.

  • aof-load-truncated
    default : yes

    redis 시작 시 aof 파일을 메모리로 로드하는데 로드 중 파일이 깨지거나 잘 못되면,
    yes로 설정 시 => 가능한 많은 데이터를 로드하고 관리자에게 알리기 위해 내용을 로그로 올리고 정상적으로 시작한다.
    no로 설정 시 => 오류를 남기고 중단한다.

  • aof-use-rdb-preamble
    default : yes

    aof 파일을 재 작성할 때, RDB 파일 형식으로 작성한다.
    aof 파일 형식보다 재 작성과 로딩 속도가 빠르다.
    재 작성 후에 원래 aof 형식으로 쓰여진다.

💬 LUA 스크립트 설정

  • lua-time-limit
    default : 5000

    루아 스크립트 최대 실행 시간

💬 SLOW 로그 설정

  • slowlog-log-slower-than
    default : 10000

    slow log 는 실행 시간을 초과하는 쿼리들을 기록에 남기는 시스템이다.
    10000 -> 10ms

  • slowlog-max-len
    default : 128

    설정 만큼 메모리를 사용한다.

💬 지연시간 모니터 설정

  • latency-monitor-threshold
    default : 0

    레디스 내부 처리 시간 모니터 여부
    0 이면 설정 비 활성화

💬 이벤트 알림 설정

  • notify-keyspace-events
    default : ""

    레디스 키 변경 이벤트 클라이언트에게 알림 유무 설정

💬 ADVANCED 설정

  • 메모리를 절약하기 위한 데이터 구조 설정
  • hash-max-ziplist-entries
    default : 512

    Hash에 포함된 필드의 종류가 설정한 값보다 크면 Hash Table 혹은 Zip Map으로 인코딩

  • hash-max-ziplist-value
    default : 512

    Hash에 포함된 필드의 값 중 가장 긴 값의 길이가 설정한 값 보다 크면 Hash Table 혹은 Zip Map으로 인코딩

  • list-max-ziplist-size
    default : -2

    list에 포함된 값이 설정한 값 보다 크면 Linked List 혹은 Zip List로 인코딩 된다.

  -5: max size: 64 Kb
  -4: max size: 32 Kb
  -3: max size: 16 Kb
  -2: max size: 8 Kb <-- 디폴트
  -1: max size: 4 Kb
  • list-compress-depth
    default : 0

    리스트 데이터 압축 설정

0: 모든 노드를 압축하지 않습니다.
1: 앞, 뒤 양쪽 노드 하나씩 압축하지 않고 가운데 노드 모두를 압축합니다.
[head]->node->node->...->node->[tail]
2: 양쪽 노드 두 개씩 압축하지 않고 가운데 노드는 압축합니다.
[head]->[next] ->node->node->...->node-> [prev]->[tail]
3: [head]->[next]->[next] ->node->node->...->node-> [prev]->[prev]->[tail]
4,5,...
  • set-max-intset-entries
    default : 512

    Set에 포함된 요소의 개수가 설정한 값보다 크거나 정수가 아닌 요소가 하나라도 포함되어 있다면 HashTable 혹은 Int Set으로 인코딩 된다.

  • zset-max-ziplist-entries
    default : 128

    Sorted Set 포함된 필드의 종류가 설정한 값보다 크면 Skip List 혹은 Zip List으로 인코딩

  • zset-max-ziplist-value
    default : 64

    Sorted Set에 포함된 필드의 값 중 가장 긴 값의 길이가 설정한 값 보다 크면 Skip List 혹은 Zip List으로 인코딩

  • 클라이언트 출력 버퍼 제한은 어떤 이유로 든 서버에서 데이터를 빨리 읽지 않는 클라이언트의 연결을 강제로 해제하는 데 사용된다.

  • client-output-buffer-limit
    default : normal 0 0 0

    일반 클라이언트
    default : replica 256mb 64mb 60
    복제 클라이언트
    default : pubsub 32mb 8mb 60
    Pub/Sub 클라이언트

  • hz
    default : 10

    레디스는 내부적으로 타임아웃된 클라이언트 연결 해제, 만료된 키 삭제와 같은 많은 백그라운드 작업을 수행한다.
    모든 작업이 동일한 빈도로 수행되는 것은 아니지만, 레디스는 지정된 "hz" 값에 따라 수행할 작업을 확인한다.

  • dynamic-hz
    default : yes

    10 이상 더 많은 클라이언트가 연결될 때 필요에 따라 hz 배수를 사용한다.

  • aof-rewrite-incremental-fsync
    default : yes

    AOF 파일을 재 작성할 때, 이 옵션이 활성화되면 매 32mb 마다 fsync를 수행한다.
    대량 디스크 I/O로 인한 문제를 줄이는 방법이다.

  • rdb-save-incremental-fsync
    default : yes

    RDB 파일을 저장할 때, 이 옵션이 활성화 되면 32mb 마다 fsync를 수행합니다. 이는 디스크 I/O 경합을 피하는 방법이다.


📌 여담

  • redis의 꽃은 cluster랑 fail over 같당

📚 참고

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글