>  기사  >  데이터 베이스  >  AOF 지속성은 무엇을 의미합니까?

AOF 지속성은 무엇을 의미합니까?

hzc
hzc원래의
2020-06-28 14:25:443115검색

AOF 지속성이란 각 쓰기 명령을 독립적인 로그에 기록하고 Redis가 다시 시작될 때 데이터 복구 목적을 달성하기 위해 AOF 파일의 명령을 다시 실행하는 것을 의미합니다. AOF의 주요 역할은 데이터의 실시간 문제를 해결하는 것입니다. 지속성.

AOF 지속성은 무엇을 의미합니까?

Redis는 데이터를 메모리에 저장하는 인메모리 데이터베이스로, 디스크에 데이터를 저장하는 기존 데이터베이스보다 읽기 및 쓰기 효율성이 훨씬 빠릅니다. 그러나 프로세스가 종료되면 Redis 데이터가 손실됩니다.

이 문제를 해결하기 위해 Redis는 데이터 손실을 방지하기 위해 메모리의 데이터를 디스크에 저장하는 RDB와 AOF라는 두 가지 지속성 솔루션을 제공합니다. RDB에 대한 소개는 "Redis RDB Persistence에 대한 자세한 설명" 기사에 있습니다. 오늘은 AOF와 관련된 원칙을 살펴보겠습니다.

AOF(파일만 추가) 지속성은 각 쓰기 명령을 독립적인 로그에 기록하고 Redis가 데이터를 복원하기 위해 다시 시작할 때 AOF 파일에서 명령을 다시 실행합니다. AOF의 주요 기능은 데이터 지속성의 실시간 문제를 해결하는 것입니다.

RDB 및 AOF

antirez는 "Redis Persistence Decryption" 문서에서 RDB 및 AOF의 각각의 장점과 단점을 설명했습니다.

  • RDB는 특정 시점의 Redis를 나타내는 컴팩트하고 압축된 바이너리 파일입니다. . 데이터 백업. 백업, 전체 복사 및 기타 시나리오에 매우 적합합니다. 예를 들어, 6시간마다 bgsave 백업을 수행하고 재해 복구를 위해 RDB 파일을 원격 시스템이나 파일 시스템에 복사합니다.

  • Redis는 AOF 방식보다 훨씬 빠르게 RDB를 로드하고 데이터를 복원합니다.

  • RDB 방식 데이터는 실시간으로 유지될 수 없지만 AOF 방식은 가능합니다.

AOF 지속성을 위한 단계는 무엇입니까?

1. 명령 추가 단계
먼저 서버는 데이터베이스에 대한 쓰기 작업 명령을 AOF 버퍼에 넣고 주기적 함수를 사용하여 버퍼의 내용을 AOF 파일에 써야 하는지 확인합니다. 세 가지 전략: 항상, 매초, 아니요). 이 세 가지 전략은 보안과 효율성 간의 균형을 유지합니다.

2. 데이터 복원
네트워크 연결 없이 의사 클라이언트를 생성하고 AOF에서 명령을 순차적으로 실행하여 데이터를 복원합니다.

3. AOF 재작성
AOF 레코드는 작업 명령을 작성하기 때문에 데이터베이스의 현재 상태를 다시 읽는 한 파일 중복이 발생하므로 AOF가 간소화될 수 있습니다.
구체적인 프로세스는 다음과 같습니다.
먼저 하위 프로세스를 생성합니다(스레드를 사용하지 않는 이유는 무엇입니까? 스레드는 잠금을 발생시켜 효율성이 낮기 때문입니다. 그리고 하위 프로세스를 사용하면 상위 프로세스를 차단하지 않습니다.)
그런 다음 상위 프로세스가 AOF를 생성합니다. 버퍼를 다시 작성하고 AOF 다시 쓰기 중에 실행된 쓰기 명령을 기록하는 데 사용합니다.
쓰기 명령은 AOF 버퍼와 AOF 다시 쓰기 버퍼 모두로 전송됩니다.
그런 다음 재작성이 완료되면 하위 프로세스가 상위 프로세스에 신호를 보냅니다. 상위 프로세스는 AOF 재작성 버퍼의 내용을 새 AOF 파일에 추가하고 원본 AOF 파일을 원자적으로 대체합니다.

추천 튜토리얼: "Redis 튜토리얼"

위 내용은 AOF 지속성은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.