DB

[DB] Redis의 영속성과 복구: 스냅샷과 AOF란?

ryureeru 2023. 8. 1. 14:15

Redis는 인메모리 데이터베이스로 모든 데이터를 메모리(RAM)에 저장합니다.

때문에 서버가 종료되면 RAM에 저장된 데이터는 모두 사라지겠죠.

즉, 데이터의 지속성은 보장하지 않습니다.

 

 

 

그렇다면, Redis는 데이터의 영속성을 어떻게 보장할까요?

 

 

1. 스냅샷 (Snapshot):

  • 스냅샷은 Redis의 데이터를 특정 시점의 상태를 파일로 저장하는 기능입니다.
  • 일정 시간 간격으로 데이터를 스냅샷 파일에 저장하면서 Redis가 비정상적으로 종료되거나 서버가 다시 시작될 경우, 이 스냅샷 파일을 사용하여 데이터를 복구할 수 있습니다.
  • 예시: Redis에 10개의 키-값 쌍을 저장한 상태라고 가정합시다. 스냅샷이라는 기능을 사용하여 현재 데이터 상태를 스냅샷 파일로 저장하였습니다. 그리고 갑작스럽게 Redis 서버가 다운되었습니다. 서버가 다시 시작되면, 이전에 저장한 스냅샷 파일을 사용하여 데이터를 복구할 수 있습니다.

 

2. AOF (Append Only File):

  • AOF는 Redis의 모든 변경 작업을 기록하는 로그 파일입니다.
  • 즉, 데이터를 변경하는 모든 커맨드들을 순차적으로 AOF 파일에 기록합니다. 이 AOF 파일에는 Redis가 받은 모든 쓰기 요청이 저장되므로 데이터의 변경 내역을 보존할 수 있습니다.
  • 예시: Redis에 10개의 키-값 쌍을 저장하고, 이후에 5개의 키에 대해 값 변경을 수행했다고 가정합시다. AOF 파일은 이 5개의 값 변경을 기록하고 있습니다. 서버가 다운되고 다시 시작되면, Redis는 AOF 파일을 읽고 이전에 변경한 값들을 다시 적용하여 데이터를 복구합니다.

 

 

 

이렇게 Redis는 스냅샷과 AOF 파일을 사용하여 데이터의 영속성을 보장합니다.

 

 

스냅샷은 특정 시점의 데이터를 저장하여 복구할 수 있게 하고, AOF 파일은 변경된 데이터의 로그를 저장하여 데이터를 변경 내역대로 복구할 수 있도록 합니다.

이렇게 함으로써 Redis는 높은 성능을 유지하면서도 데이터의 지속성을 보장하는 데이터베이스로 다양한 용도에서 활용될 수 있습니다.