Redis 지속성 메커니즘의 구현 원리는 무엇인가요?
지속성: Redis는 메모리 내 데이터베이스이며 데이터는 메모리에 저장됩니다. 프로세스 종료로 인한 데이터의 영구적인 손실을 방지하려면 Redis의 데이터를 정기적으로 메모리에서 하드 디스크로 저장해야 합니다. form(데이터 또는 명령) ;다음에 Redis가 다시 시작되면 영구 파일을 사용하여 데이터 복구를 수행합니다. 또한 재해 백업을 위해 영구 파일을 원격 위치에 복사할 수 있습니다
영속 프로세스는 무엇인가요?
redis 데이터는 디스크에 저장할 수 있는데, 그 과정은 어떻게 되나요?
다음 5가지 프로세스가 필요합니다.
(1) 클라이언트가 서버에 쓰기 작업을 보냅니다(데이터는 클라이언트의 메모리에 있음).
(2) 데이터베이스 서버는 쓰기 요청의 데이터를 받습니다(데이터는 서버의 메모리에 있습니다).
(3) 서버는 write 시스템 호출을 호출하여 데이터를 디스크에 씁니다(데이터는 시스템 메모리의 버퍼에 있음).
(4) 운영 체제는 버퍼의 데이터를 디스크 컨트롤러로 전송합니다(데이터는 디스크 캐시에 있음).
(5) 디스크 컨트롤러는 디스크의 물리적 매체에 데이터를 씁니다(데이터는 실제로 디스크에 저장됩니다).
이 5가지 프로세스는 이상적인 조건에서 정상적인 저장 프로세스이지만 대부분의 경우 당사 기계 등에서는 다양한 오류가 발생합니다. 다음은 두 가지 상황입니다.
Redis 데이터베이스 발생 오류가 발생한 경우 세 번째 단계까지 위 작업이 완료되면 유지 및 저장이 가능하며, 운영 체제에 오류가 발생하면 나머지 두 단계는 모두 완료되어야 합니다.
위의 5단계를 처리하기 위해 redis는 RDB(Redis DataBase)와 AOF(Append Only File)라는 두 가지 지속성 방법을 제공합니다.
fork 작업이 필요하기 때문에 RDB 스냅샷과 AOF 재작성은 매우 중요합니다. Redis는 리소스를 많이 소모하는 작업인 차단을 유발합니다. 따라서 Redis 메인 프로세스의 응답에 영향을 주지 않기 위해서는 블로킹을 최대한 줄여야 합니다.
1. RDB를 수동으로 트리거하여 스냅샷을 생성하고 AOF를 다시 작성할 수 있습니다.
2. 포크가 너무 오래 걸리는 것을 방지하기 위해 Redis의 최대 메모리 사용량을 제어합니다. 강력한 하드웨어 ;
4. 물리적 메모리 부족으로 인한 포크 실패를 방지하기 위해 Linux 메모리 할당 전략을 올바르게 구성하세요
온라인 실제 경험:1. Redis의 데이터가 특별히 민감하지 않거나 다른 곳에서 다시 쓸 수 있는 경우 데이터를 생성하려면 지속성을 끌 수 있습니다. 데이터가 손실된 경우 다른 방법을 통해 복구할 수 있습니다.
2. Redis의 상황을 정기적으로 확인하고 수동으로 백업을 실행하고 데이터를 다시 작성할 수 있습니다.
3. 마스터-슬레이브 머신을 결합하고, 백업 처리를 위해 슬레이브 머신을 사용할 수 있으며, 다른 머신은 클라이언트 명령에 정상적으로 응답합니다. 4.RDB 지속성과 AOF 지속성은 동시에 존재하고 함께 사용될 수 있습니다.위 내용은 Redis 지속성 메커니즘의 구현 원리와 프로세스는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!