>데이터 베이스 >Redis >Redis의 지속성 솔루션은 무엇입니까?

Redis의 지속성 솔루션은 무엇입니까?

WBOY
WBOY앞으로
2023-05-27 08:08:02801검색

지속성 방법은 무엇입니까? 차이점이 뭐야?

Redis 지속성 솔루션은 RDB와 AOF의 두 가지 유형으로 구분됩니다.

RDB

RDB 지속성은 구성에 따라 수동으로 또는 주기적으로 실행할 수 있습니다. RDB 파일은 특정 시점의 데이터베이스 상태를 압축된 바이너리 파일로 저장하는 것입니다. 복원된 특정 시점의 데이터베이스 상태입니다. RDB 파일은 하드디스크에 저장되기 때문에 redis가 충돌하거나 종료되더라도 RDB 파일이 존재하는 한 데이터베이스의 상태를 복원하는 데 사용할 수 있다.

SAVE 또는 BGSAVE를 통해 RDB 파일을 생성할 수 있습니다.

SAVE 명령은 RDB 파일이 생성될 때까지 redis 프로세스를 차단합니다. 프로세스 차단 기간 동안 redis는 명령 요청을 처리할 수 없으며 이는 분명히 부적절한 일입니다.

BGSAVE는 하위 프로세스를 분기한 다음 하위 프로세스가 RDB 파일 생성을 담당하게 됩니다. 상위 프로세스는 프로세스를 차단하지 않고 계속해서 명령 요청을 처리할 수 있습니다.

AOF

AOF는 RDB와 다릅니다. AOF는 Redis 서버에서 실행되는 쓰기 명령을 저장하여 데이터베이스 상태를 기록합니다.

AOF는 추가, 쓰기, 동기화의 세 단계를 통해 지속성 메커니즘을 구현합니다.

  1. AOF 지속성이 활성화되면 서버가 write 명령을 실행한 후 write 명령이 aof_buf 버퍼 끝에 추가됩니다.

  2. 서버가 각 이벤트 루프를 종료하기 전에 flashAppendOnlyFile 함수가 호출됩니다. aof_buf의 내용을 AOF 파일에 저장할지 여부는appendfsync를 구성하여 결정할 수 있습니다.

always ##aof_buf内容写入并同步到AOF文件
everysec ##将aof_buf中内容写入到AOF文件,如果上次同步AOF文件时间距离现在超过1秒,则再次对AOF文件进行同步
no ##将aof_buf内容写入AOF文件,但是并不对AOF文件进行同步,同步时间由操作系统决定

설정하지 않으면 기본 옵션은 Everysec이 됩니다. 왜냐하면 Always가 가장 안전하기는 하지만(단 하나의 이벤트 루프 쓰기 명령만 손실됨) 성능이 좋지 않고 Everysec 모드에서는 1초의 클럭 데이터만 손실될 수 있기 때문입니다. , 모드 없음의 효율성은 Everysec의 효율성과 유사하지만 AOF 파일의 마지막 동기화 이후의 모든 쓰기 명령 데이터가 손실됩니다.

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

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제