2010-03-15 4 views
36

"내구성"이란 말은 서버가 언제든지 중단 될 수 있으며 디스크가 손상되지 않는 한 데이터가 손실되지 않습니다 (ACID 참조). 저널링 모드가 그럴듯한 것처럼 보이지만, 저널링을 활성화하면 메모리 내 데이터에서 작동하는 목적을 상쇄하지 않습니까? 읽기 작업은 저널링의 영향을받지 않을 수도 있지만 저널링이 쓰기 성능을 떨어 뜨리는 것처럼 보입니다.redis는 내구성있는 데이터 저장소입니까?

+5

. 일부 데이터가 절름발이 상태이거나 모든 데이터가 디스크에 기록 될 때까지 기다려야합니다. –

+5

그게 바로 내가이 질문을하는 이유입니다. – allyourcode

답변

49

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 유의하십시오.) 당신은 그것을 두 가지를 가질 수 없습니다

+3

잘 알고 있습니다. 당신이 말하는 것을 뒷받침 할 수있는 링크를 제공 할 수 있습니까? – allyourcode

+1

@FrankFarmer 필자는 구성 기본값에 대한 정보가 오래되어 "No"로 시작하여 헤드 라인을 조금 묻어 버렸기 때문에 일부를 편집했습니다. 내 개선 사항을 자유롭게 개선하십시오. :-) – HostileFork

+1

@HostileFork 당신이 만든 실질적인 변화를 감안할 때, 나는 당신이 자신의 대답을 제출하는 것이 낫다고 생각합니다. 새 관점이 확실히 환영받을만큼 길었습니다. –