Redis는 영속성이 없는 데이터베이스일까?

호기성세균·2024년 10월 8일
0

cs

목록 보기
28/29
post-thumbnail

Redis는 In-memory DB로, 메모리에 데이터를 저장해 매우 빠른 속도로 처리할 수 있다는 것이 큰 장점이다.
이로 인해 Redis를 영속성이 없는 휘발성 데이터베이스로 착각할 수 있지만, Redis는 데이터를 디스크에 저장하여 영구적으로 보존할 수 있는 강력한 메커니즘도 제공한다.

💡 이러한 영속성 덕분에 서버가 종료되거나 재시작되어도 데이터 유실 없이 다시 복구할 수 있는 능력을 갖추고 있다.

Redis의 영속성 기능은 매우 유용하지만, 이로 인해 발생할 수 있는 문제도 존재한다.
Redis를 단순 캐시 용도로만 사용한다면 데이터를 디스크에 저장할 필요가 없지만, 중요한 데이터를 저장하는 경우라면 영속성 기능을 적극적으로 활용해야 한다.


📌 Redis에서 데이터 저장 방식

Redis는 두 가지 방식으로 데이터를 디스크에 저장할 수 있다: RDB AOF

💡 RDB (Redis Database Backup)

Redis의 메모리 데이터를 일정 간격마다 스냅샷 형태로 디스크에 저장하는 방식이다.
이 방식은 Redis 서버가 장애가 발생했을 때 해당 스냅샷을 사용해 특정 시점의 상태로 복구할 수 있게 해준다.

RDB의 주요 특징:

  • Redis는 기본적으로 .rdb 파일에 데이터를 저장하도록 설정되어 있다.

    RDB는 RDBMS가 아니라 단순 메모리 스냅샷을 파일 형태로 저장할 때 쓰는 파일의 확장자명이다.
    ❗️ 세팅을 안해도 Redis는 자동으로 .rdb라는 확장자의 파일에 인메모리 데이터를 저장하도록 디폴트로 설정되어있다.

  • 스냅샷 : 특정 시점의 메모리 상태를 그대로 저장하며, 스냅샷을 통해 해당 시점으로 데이터를 복구할 수 있다
  • 장점: RDB 파일은 크기가 작아 저장 공간을 적게 차지하며, Redis가 재시작될 때 파일을 빠르게 로드할 수 있어 서버 구동 속도가 매우 빠르다.
  • 단점: 스냅샷 간격 동안 발생한 데이터는 저장되지 않기 때문에, 그 사이에 장애가 발생하면 해당 데이터는 유실될 수 있다.
    또한, 스냅샷 생성 시 CPU와 I/O 리소스를 많이 사용하기 때문에 성능 저하가 발생할 수 있다.

💡 AOF (Append Only File)

Redis에서 실행된 모든 변경 명령어(write, update)를 순차적으로 파일에 기록하는 방식이다.
이를 통해 장애 발생 시 로그 파일을 재실행해 최신 상태까지 데이터를 복구할 수 있다.

AOF의 주요 특징:

  • 모든 변경 연산이 AOF 파일에 기록되며, Redis는 해당 명령어를 로그에 기록한 후 실제로 메모리에 반영한다.
  • 장점: AOF 방식은 데이터 손실 가능성이 거의 없다.
    또한, AOF 파일은 텍스트 형식으로 저장되어 사람이 읽을 수 있고 수정도 가능하다.
  • 단점: 모든 명령어를 기록하기 때문에 로그 파일의 크기가 매우 커질 수 있으며, 서버 재시작 시 로그에 기록된 모든 명령어를 다시 실행해야 하므로 복구 시간이 길어질 수 있다.
    ❗️ 이를 해결하기 위해 Redis는 로그 파일을 최적화하는 rewrite 기능을 제공한다.

📌 Redis 영속성 선택 기준

Redis에서 RDB와 AOF를 선택하는 데는 시스템 요구 사항에 따른 몇 가지 기준이 있다

1. 데이터 손실 허용 범위

데이터 손실이 전혀 허용되지 않는다면 AOF가 적합하다.
일정 부분 손실을 감수할 수 있다면 RDB만으로 충분할 수 있다.

2. 복구 속도

빠른 복구 속도가 중요하다면 RDB가 적합하다. AOF는 모든 명령어를 다시 실행해야 하기 때문에 복구 시간이 오래 걸릴 수 있다.

저장 공간

AOF는 로그 파일 크기가 커질 수 있기 때문에 저장 공간이 제한적이라면 RDB가 더 효율적일 수 있다.


📌 RDB와 AOF 혼합 사용 전략

Redis는 RDB와 AOF의 장점을 조합하여 사용할 수 있다.
예를 들어, 주기적으로 RDB 스냅샷을 생성하고, 그 사이의 변경 사항은 AOF에 기록하는 방식으로 데이터를 관리할 수 있다.

❗️ 이 혼합 방식은 RDB의 빠른 복구 속도와 AOF의 데이터 무결성을 동시에 확보하는 좋은 방법이다.


📌 결론

Redis의 영속성 기능은 메모리 기반 DB의 단점을 보완해주며, 이를 통해 Redis는 단순한 캐시를 넘어 중요한 데이터 저장소로 활용될 수 있다.
각 방식이 가진 장단점을 잘 이해하고 시스템의 요구에 맞는 방식을 선택하는 것이 중요하다. 특히 RDB와 AOF를 혼합하여 사용하면 성능과 데이터 보존이라는 두 가지 요구를 모두 충족시킬 수 있는 최적의 솔루션을 만들 수 있다.

profile
공부...열심히...

0개의 댓글