redis

redis 설정

끄적끄적 2022. 4. 13. 14:49

redis.conf 설정 사항사항이다. 디폴트 설정에서 변경을 검토해야 하는 설정을 파란색으로 표기

- NETWORK설정
bind 0.0.0.0 ( redis의 외부 오픈 설정, 외부접속 허용)
protected-mode no (보안 설정 모드)
port 6379 (수신할 포트)

- GENERAL 설정
pidfile /var/run/redis/redis-server.pid ( pid 파일 위치)
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16    # 기본적으로 16개의 데이터베이스를 갖는다. select 4 와 같이 데이터베이스를 바꿀 수 있다.

-  SNAPSHOTTING 설정
 save <seconds> <changes>  해당 시간안에 변경이 있으면 데이터 전체 rdb파일로 저장
save 900 1   # 900초(15분)안에 1개 이상 데이터가 변경되면 저장
save 300 10   # 300초(5분)안에 10개 데이터가 변경되면 저장
save 60 10000   #  60초 안에 만개 이상 데이터가 변경되면 저장
stop-writes-on-bgsave-error yes   # rdb 파일 저장실패시 데이터를 받아들일지 말지
dbfilename dump.rdb   # rdb 파일명이며 dir 파라미터 지정한 곳에 저장한다.
dir /var/lib/redis    # rdb, aof 파일 저장위치

- REPLICATION 설정
replicaof <masterip> <masterport>   # 4.x까지 slaveof였고 5.0부터 replicaof로 변경
masterauth <master-password>   # master에 패스워드가 설정되어 있을 경우 설정
replica-serve-stale-data yes   # master와 SYNC문제가 있더라도 응답할 것인지
replica-read-only yes    # slave에 직접 접속하여 데이터 변경하는 것을 막을지. slave-read-only
repl-diskless-sync no  # 새로운 slave접속시 rdb파일을 생성후 전송하는데, 파일 생성없이 바로 socket으로 보낼지(디폴트값 no는 disk에 파일 생성후 전송방식)
repl-diskless-sync-delay 5     # 위 diskless 설정시 slave접속하자마자 동기화시작보다 5초 후에 동기화시작
repl-disable-tcp-nodelay no   # master, slave 간 동기화시 사용하는 대역폭 제어. yes설정시 대역폭 제한
repl-backlog-size 1mb  # slave 연결 끊겼을때 버퍼로 보관할 사이즈(기본값 1mb). 버퍼를 초과하면 전체동기화로 동작
repl-backlog-ttl 3600  # 해당 시간이 지나면 위 backlog 메모리를 해제함
replica-priority 100   # 마스터노드가 다운되었을때 어느 slave가 마스터가 될지. 숫자가 적을수록 우선순위가 높다.

- MEMORY MANAGEMENT 설정
maxmemory 500m
maxmemory-policy allkeys-lru     # 메모리 한계치까지 사용했을때 어떤 걸 삭제할지
maxmemory-sample 5   # LRU(Least Recently Used) 알고리즘에 의한 메모리 운영. 5개 검사해서 그중 하나 선택삭제
lfu-log-factor 10   # LFU(Least Frequently Used) 알고리즘에 의한 메모리 운영
lfu-decay-time 1   

- LAZY FREEING 설정
lazyfree-lazy-eviction yes    # 키를 DEL할때 락을 걸고 지우는게 아니라, non blocking으로 삭제(UNLINK)
lazyfree-lazy-expire yes      # expire된 키를 삭제할 때 UNLINK방식(non blocking)으로 삭제
lazyfree-lazy-server-del yes   # rename 명령시에 기존 키를 삭제하고 새로 넣는 방식인데, 그 때도 UNLINK방식
replica-lazy-flush yes          # slave는 full sync시에 기존 가지고 있는 데이터를 모두 지우는데. 이때 UNLINK방식

- APPEND ONLY MODE 설정
appendonly no            # redis에서 비동기로 디스크에 저장. 장비가 죽으면 1초 정도 데이터는 유실가능. yes로 되어 있으면 redis서버 시작시 AOF파일 읽어서 기동, no로 되어 있으면 dump.rdb파일 읽음.
appendfilename "appendonly.aof"
appendfsync everysec   # always(명령 실행될 때마다), everysec(1초마다), no(OS에서 알아서)
no-appendfsync-on-rewrite no  # AOF/RDB파일 저장중에 fsync() 실행여부. yes로 설정시 경합방지로 appendfsync no와 같은 효과. AOF파일 저장으로 지연문제가 있을 경우 yes검토
auto-aof-rewrite-percentage 100   # AOF파일이 기존 파일에서 100% 증가했으면, rewrite 수행
auto-aof-rewrite-min-size 64mb    # AOF파일 최소 사이즈 이하에서는 rewrite 하지 않음
aof-load-truncated yes      # AOF파일 끝에 오류가 있을 때 무시(truncate)하고 정상 기동할지.
aof-use-rdb-preamble yes  # AOF파일이 rewrite될때 바이너리로 저장하여, 빠른 처리를 할지

 

 

반응형