Print
카테고리: [ NoSQL ]
조회수: 3052

앞서 Redis 의 메모리 저장방식에는 RDB 방식과 AOF 방식이 있다고 얘기하였습니다. 또한 하나의 방식만 선택하는 것이 아니라, 두개를 혼합하여 사용할 수도 있는데..그렇다면 두개의 설정이 모두 있다면 과연 어느 것을 먼저 읽게 될까요

 

사용자 입장에서는 당연히, 최신 데이터를 더 많이 가진 파일을 읽어야 할 텐데 어떤 파일이 최신 데이터를 더 많이 가지고 있는지는 알 수가 없습니다. 그렇다면, RDB 와 AOF의 특징을 알아보면 좀 더 쉽게 알 수 있습니다.

 

특정 시점을 기준으로  Full Scan 하는 방식인 RDB와 WAL(Write Ahead Log) 형태로 매 트랜젝션을 파일에 저장하는 AOF 중에서, 결과적으로  AOF는 항상 메모리에 반영하기 직전에 쓰기 때문에 AOF를 먼저 읽게 됩니다. 다시 말하면, AOF 가 더 최신의 데이터를 많이 가지고 있다고 Redis에서 생각을 하는 것입니다. 

 

예를들어, 한 시간 단위로 저장을 한다면, RDB의 경우 장애 발생 시 다음 저장할 때까지의 데이터는 모두 유실되게 되지만, AOF는 매 작업마다 디스크에 기록을 남기기 때문에 모든 데이터가 남게 됩니다.

 

그럼 RDB는 사용을 안하는 것일까요?

 

AOF 파일이 무제한으로 커지는 것을 막기 위해서, AOF 파일이 일정 크기 이상이 되면 현재까지의 메모리를 RDB방식으로 덤프를 생성하고 이후  AOF 파일을 지우고 새로 쓰기를 시작하는 것으로 두가지 방식을 혼합하여 사용하게 됩니다.

 

이상입니다.