1. 레디스 소개
(1) 레디스란?
REDIS (REmote Dictionary Server)는 메모리 기반의 “키-값” 구조 데이터 관리 시스템입니다.
모든 데이터를 메모리에 저장하여 빠른 Read, Write 속도를 보장합니다.
레디스는 크게 5가지< String, Set, Sorted Set, Hash, List >의 데이터 형식을 지원합니다.
(2) 데이터가 클라이언트에서부터 디스크로 쓰여지는 과정
Step 1: 클라이언트가 레디스 서버로 데이터를 보냅니다. 데이터는 현재 클라이언트 메모리에 있습니다.
Step 2: 레디스 서버가 데이터를 받습니다. 데이터는 레디스 서버 메모리에 있습니다.
Step 3: 레디스 서버가 데이터를 디스크에 쓰는 write() 시스템 콜을 호출합니다. 데이터는 커널 버퍼에 있습니다.
Step 4: 운영체제(OS)는 fsync() 시스템 콜을 호출해서 버퍼에 있는 데이터를 디스크 제어기(controller)에 씁니다. 데이터는 디스크 캐시(cache)에 있습니다.
Step 5: 디스크 제어기는 물리적으로 디스크에 기록합니다.
2. 레디스 설치
1) 설치 후 tar.gz 파일 압축을 풉니다.
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
2) 압축을 푼 폴더에서 make, make install을 차례로 실행합니다.
$ make
$ make install
3. 레디스 환경설정
(1) redis.conf 파일 수정
# redis 서버를 나가도 background 실행되도록 설정
daemonize no -> yes
# redis가 변경 커멘드를 받을 때마다, AOF(Append-Only-File)에 커멘드가 추가되도록 설정
appendonly no -> yes
(2) REDIS AOF(Append-Only-File) 설정
옵션 |
설명 |
appendonly: |
AOF를 사용(yes) 또는 사용 금지(no)를 설정. default : no |
appendfilename |
AOF 파일 이름. |
appendfsync |
AOF 파일에 데이터가 쓰여지는 시점을 정하는 옵션. default : everysec * always: 레디스 명령이 실행될 때 마다 디스크에 씀. 성능이 매우 떨어짐. * everysec: 데이터를 모아서 1초 마다 디스크에 씀. write()와 fsync() 시스템 콜 호출의 지연 시간에 따라서 최대 2초 이내의 데이터를 잃어 버릴 수 있지만, 성능과 데이터 보존 양 측면에서 적절. * no: 디스크에 쓰는 시점을 운영체제(리눅스)에 맡김. 대부분의 리눅스 시스템에서는 30초 마다 디스크에 저장. |
no-appendfsync-on-rewrite |
appendfsync를 always 나 everysec로 설정했을 때, 대량 쓰기 동안 fsync() 수행 여부를 정하는 옵션. default : no * no : 대량 쓰기 동안 설정된 대로 fsync()를 수행. * yes : 대량 쓰기 동안 레디스 서버에서 fsync()를 수행하지 않고 운영체제에게 맡김. 30초 마다 한 번씩 fsync()가 수행. |
auto-aof-rewrite-percentage |
해당 옵션의 사용 가능한 값은 0~100. default : 100 AOF 크기가 명세한 퍼센트까지 도달하면, 암묵적으로 BGREWRITEAOF 커맨드를 실행하여, 자동으로 로그 파일을 rewrite함. |
auto-aof-rewrite-min-size |
rewrite된 AOF의 최소 크기. Default : 67,108,864 바이트 AOF 파일 크기가 이 옵션에서 설정한 값 이상이 되어야 rewrite함. |
aof-load-truncated |
크래쉬가 발생할 경우, AOF가 일부만 남을 수 있는데, 해당 옵션은 에러 시 시작 또는 종료시 레디스가 truncated AOF를 로드할 것인지를 설정. * yes : 레디스는 잘려진 파일(truncated file)을 로드하고 에러 메시지를 출력. *no : 레디스는 오류를 남기고 중단, 이 경우 AOF파일을 수정해야 함. |
dir |
AOF(또는 RDB 파일)의 디렉토리 위치를 명세. |
이어지는 글
https://javannspring.tistory.com/257
https://javannspring.tistory.com/258
https://javannspring.tistory.com/259
'DB > REDIS' 카테고리의 다른 글
Redis Cache (0) | 2023.08.08 |
---|---|
4. REDIS Sentinel (0) | 2019.07.24 |
3. REDIS Replication (Master-Slave) (0) | 2019.07.24 |
2. REDIS 실행 및 명령어 (0) | 2019.07.24 |