DevBoi

[Redis] Persistence 본문

Develop/[Redis]

[Redis] Persistence

HiSmith 2022. 4. 13. 00:12
반응형

Redis의 영속성이라고 해석되며

프로그램이 종료되어도 사라지지 않는 데이터 특성이다.

 

Redis는 이 영속성을 어떻게 지킬까?

 

RDB 영속성은 명시된 간격 마다 dateset의 해당 시점의 스냅샷을 수행한다.

AOF는 서버로 수신된 모든 쓰기작업을 기록하고, 서버 재시작시에, 수행되서 원래의 데이터셋을 재구축한다.

 

동일한 인스턴스에서 AOF와 RDB를 결합해서 사용할 수 있다.

자식 프로세스가 forking 하기 때문에 메모리를 2배를 사용할수 있지만, 부모 인스턴스가 디스크I/O를 수행하지 않아

AOF에 비해서 다 빠르게 재시작된다.

일정시간마다 스냅샷이 생성되기 떄문에, 예외 종료시에 데이터를 잃어버릴 수 있다.

 

 

redis 에서 데이터를 저장하는 방법으로 snapshotting 방식과 AOF방식이 있다.

 

1.snapshotting (RDB) 방식

-순간적으로 메모리에 있는 내용을 디스크에 옮기는 방식이다.

SAVE와 BGSAVE 두가지 방식이 있다.

 

SAVE는 순간적으로 redis의 동작을 정지시키고, 그 snapshot을 디스크에 저장한다.

BGSAVE는 별도의 자식 프로세스를 띄우고, 동작을 멈추지 않고, disk에 저장한다.

 

장점 : 메모리의 snapshot을 그대로 저장하기 때문에, 서버를 재구동시 snapshot을 읽으면 속도가 빠른 장점이 있다.

단점 : 도중에 서버가 꺼지면, 이후 데이터가 모두 사라진다. (스냅샷을 만들기 전에)

 

 

2. AOF 방식

write/update 연산을 log파일에 기록한다.

서버가 재시작될 때 log에 기록된 write/update 연산을 재 실행하여, 데이터를 복구한다.

log파일에 대해서만 append하기 때문에 log write 속도가 빠르고, 어떤 시점에 서버가 다운되더라도 데이터가 사라지지 않는다.

log 데이터 양이 크고, 복구 시 저장된 모든 연산을 다시 실행하기 때문에 재시작이 느리다.

 

 

 

 

결론

 

주기적으로 snapshot으로 백업하고, 스냅샷까지의 저장을 aof방식으로 혼용한다.

반응형

'Develop > [Redis]' 카테고리의 다른 글

[Redis] Redis Pub Sub  (0) 2022.04.13
[Redis] Cluster vs Sentinel  (0) 2022.04.12
[Redis] TTL이란  (0) 2022.04.12
[Redis] Eviction 정책  (0) 2022.04.12
[Redis] 지원하는 데이터 유형  (0) 2022.04.12