redis?
데이터 저장소로 디스크가 아닌 메모리를 사용합니다. 이 말은 즉 컴퓨터 구조상 때려죽어도 ssd나 hdd를 저장소로 사용하는 시스템 보다 빠를 수 밖에 없습니다. 그리고 메모리 데이터는 휘발성이기 때문에 이를 보완하는 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 넘길 수 있고, 디스크에 저장하는 방법을 제공합니다.
특징
- 이는 서버cpu에 따라 다르지만 일반적으로 5만 ~25만회를 실행합니다.
- 메모리를 저장소로 사용하기때문에 빠를 수 밖에 없다.
- Redis Server Instance는 1개 프로세스로 수행됩니다. 그렇기 대문에 평상 시 CPU 1 core만 사용합니다. 그러므로 서버 머신 이나 vm에 여러개의 redis server를 사용할 수 있습니다.
레디스 서버 스레드
멀티스레드
레디스 서버는 멀티 스레드입니다. 버전 3.2까지는 3개의 스레드, 4.0부터는 4개 스레드가 동작합니다.
- 메인 스레드 : BIO_CLOSE_FILE, BIO_AOF_FSYNC, BIO_LAZY_FREE 이 세개의 Sub스레드에서 처리하는 것 이외에 거의 모든 명령어나 이벤트를 처리합니다.
- Sub 쓰레드 1번(BIO_CLOSE_FILE): AOF Rewrite 할 때 새 파일에 Rewrite 완료하고 기존 파일을 close 할 때 동작한다. AOF를 활성화하지 않아도 쓰레드는 생성된다.
- Sub 쓰레드 2번(BIO_AOF_FSYNC): 1초 마다 AOF에 쓸 때 동작한다.
- Sub 쓰레드 3번(BIO_LAZY_FREE): UNLINK, 비동기 FLUSHALL 또는 FLUSHDB 명령을 처리할 때 동작한다. 이 쓰레드는 버전 4.0에 추가되었다.
레디스 서버 프로세스
레디스를 사용하다보면 서버는 하나만 실행 중인데 레디스 프로세스가 2개가 보일 때가 있을것입니다. 이것은 스레드가 아니고 레디스 프로세스 2개가 동시에 실행중인것입니다.
레디스 서버는 RDB 파일을 저장할때와 AOF 파일을 다시 쓸때 자식 프로세스를 생성해서 작업합니다.
RDB 파일을 저장할때
- BGSAVE 명령을 실행해서 RDB 파일을 저장할때
- redis.conf 파일의 save option에 의해서 RDB 파일을 저장할때
- SLAVEOF host port 명령을 실행해서 복제하려고 RDB 파일을 저장할때
- redis.conf 파일의 slaveof 설정으로 슬레이브 노드의 요청에 의해 RDB 파일을 저장할때AOF 파일을 저장할때
- BGREWRITEAOF 명령을 실행해서 AOF 파일을 rewrite할때 저장할때
- redis.conf 파일의 auto-aof-rewrite-percentage 옵션에 의해서 AOF 파일을 rewrite할때 저장할때
레디스 사용분야
- 디지털 트윈
- 디지털 트윈은 컴퓨터에 현실 속 사물을 똑같이 3D로 만들어 현실에 발생하는 데이터를 받아 트윈에 적용하는 기술 입니다. 이때 모니터링하는 사물의 수많은 센서 데이터를 실시간으로 받아 처리하는데 레디스를 사용합니다.
- 항공사 비행일정
- 항공사 비행 일정을 여행사 똔느 일반 고객에게 제공하는데 레디스를 사용하고 있습니다. 수많은 항공사의 비행일정에서 고객이 원하는 일자와 출발지, 경유지, 목적지에 맞는 최적의 비행 스케줄을 빠르게 제공하는 것은 쉽지 않기때문에 레디스를 활용해 최적의 스케줄을 빠르게 제공하는데 사용할 수 있습니다.
- 사물인터넷
- IOT의 수많은 센서들이 보내는 정보를 받아 처리할때 사용하기도 합니다.
'Redis' 카테고리의 다른 글
redis 용량 계산하기 (0) | 2023.02.04 |
---|---|
redis 자료구조 - LISTS (0) | 2023.02.04 |
redis 자료구조 - STRINGS (0) | 2023.02.04 |