"내구성"이란 말은 서버가 언제든지 중단 될 수 있으며 디스크가 손상되지 않는 한 데이터가 손실되지 않습니다 (ACID 참조). 저널링 모드가 그럴듯한 것처럼 보이지만, 저널링을 활성화하면 메모리 내 데이터에서 작동하는 목적을 상쇄하지 않습니까? 읽기 작업은 저널링의 영향을받지 않을 수도 있지만 저널링이 쓰기 성능을 떨어 뜨리는 것처럼 보입니다.redis는 내구성있는 데이터 저장소입니까?
답변
Redis는이 아니며 일반적으로 저널링이있는 경우에도 "내구성"데이터 저장소 (ACID의 "D"의미로 사용됨)로 배포됩니다. 대부분의 유스 케이스는 속도에 대한 대가로 약간의 내구성을 의도적으로 희생합니다.
그러나 "파일 만 추가"저장소 모드는 성능면에서 내구성이있는 방식으로 작동하도록 선택적으로 구성 할 수 있습니다. 모든 수정시 fsync()을 지불해야합니다. 이렇게 구성하려면, 당신의 .conf 파일에이 두 가지 옵션을 설정
appendonly yes
appendfsync always
를 문서에서 : 레디 스는 fsync를 얼마나 많은 시간 How durable is the append only file?
확인 redis.conf, 당신은 을 구성 할 수 있습니다() 데이터를 디스크의 다음 세 가지 옵션이 있습니다.
- 새 명령이 추가 로그 파일에 추가 될 때마다입니다. 매우 매우 느리고 매우 안전합니다.
- Fsync() 한 번만 초. 충분히 빠르면 재해가 발생하면 데이터의 1 초를 잃을 수 있습니다.
- 절대 fsync()를 사용하지 말고 데이터를 작동 시스템의 손에 넣기 만하면됩니다. 더 빠르고 unsafer 방법.
은 (레디 스 포스트 2.0.0로 구성 파일 배송 appendfsync의 기본이 everysec
, 그리고 always
유의하십시오.) 당신은 그것을 두 가지를 가질 수 없습니다
잘 알고 있습니다. 당신이 말하는 것을 뒷받침 할 수있는 링크를 제공 할 수 있습니까? – allyourcode
@FrankFarmer 필자는 구성 기본값에 대한 정보가 오래되어 "No"로 시작하여 헤드 라인을 조금 묻어 버렸기 때문에 일부를 편집했습니다. 내 개선 사항을 자유롭게 개선하십시오. :-) – HostileFork
@HostileFork 당신이 만든 실질적인 변화를 감안할 때, 나는 당신이 자신의 대답을 제출하는 것이 낫다고 생각합니다. 새 관점이 확실히 환영받을만큼 길었습니다. –
. 일부 데이터가 절름발이 상태이거나 모든 데이터가 디스크에 기록 될 때까지 기다려야합니다. –
그게 바로 내가이 질문을하는 이유입니다. – allyourcode