## 개요
- 메모리 전체를 .rdb 파일에 바이너리로 디스크에 저장하는 방식 (Snapshot).
- 백업 시점 사이의 데이터는 유실될 수 있기 때문에 엄격하게 [[Redis AOF|AOF]] 방식과 같이 사용해야 한다.
## 적용 방법
### redis-cli
#### SAVE
- 메인 프로세스에서 메모리 데이터를 RDB 파일을 새로 만들어서 작성하고, 작성이 끝나면 기존 파일을 지우고 새 파일로 교체한다.
- 메인 프로세스에서 실행하기 때문에 `SAVE`를 실행하는 동안 다른 요청을 처리하지 못한다.
#### BGSAVE
- 자식 프로세스를 [[fork]]해서 새로운 RDB 파일을 작성하고, 작성이 끝나면 기존 파일을 지우고 새 파일로 교체한다.
- 자식 프로세스에서 실행하기 때문에 `BGSAVE`를 수행하는 동안에도 다른 요청을 처리할 수 있다.
### redis.conf
- `redis.conf` 파일에 `save` 파라미터를 지정하면 된다.
- 첫 번째 인자는 시간(초)이고, 두 번째 인자는 변경된 데이터 개수이다.
- 여러 개를 사용할 수 있는데, 여러 조건 중 하나만 만족하면 저장된다.
```
save 900 1 # 900초 동안 1개 이상 변경되면 저장
save 300 1 # 300초 동안 1개 이상 변경되면 저장
save 60 10000 # 60초 동안 10000개 이상 변경되면 저장
```
## 참고
- https://mozi.tistory.com/371
- http://redisgate.kr/redis/configuration/param_save.php
#redis #db