질문)
파일로 REDIS설정을 안해놓으면, reboot시에 데이타는 없어지는게 원칙인가요?
답변)
네, Redis는 기본적으로 메모리 기반 데이터 저장소이기 때문에, 파일 저장 설정이 없으면 서버 재시작(reboot) 시 데이터가 사라지는 것이 기본 동작입니다.
Redis의 기본 동작 원리
Redis는 메모리 내에서 데이터를 저장하며, 디스크에 데이터를 저장하도록 설정하지 않는 한, 시스템이 재부팅되거나 Redis 서버가 종료되면 데이터는 영구적으로 사라집니다.
데이터 영구화를 위한 옵션
Redis에서 데이터를 영구적으로 저장하려면 다음 중 하나를 활성화해야 합니다.
1. RDB (Redis Database Backup)
- Redis는 특정 시점마다 메모리의 스냅샷을 디스크에 저장합니다.
- 설정 예제 (redis.conf):
save 900 1 # 15분 동안 1개 이상의 키가 변경되면 저장 save 300 10 # 5분 동안 10개 이상의 키가 변경되면 저장 save 60 10000 # 1분 동안 10,000개 이상의 키가 변경되면 저장 dbfilename dump.rdb dir /path/to/directory
- RDB 파일(dump.rdb)은 Redis 서버 종료 후 재시작 시 데이터를 복원합니다.
2. AOF (Append-Only File)
- 모든 쓰기 작업(SET, HSET 등)을 로그 형식으로 기록하여 데이터를 영구적으로 저장합니다.
- 설정 예제 (redis.conf):
-
appendonly yes appendfilename "appendonly.aof"
- AOF는 Redis 서버가 종료되더라도 데이터를 복원할 수 있습니다.
기본 설정 확인
Redis는 기본적으로 영구 저장 설정이 비활성화되어 있습니다. Redis의 기본 동작을 확인하려면 redis-cli에서 다음 명령어로 설정을 확인할 수 있습니다:
- RDB 설정 확인:출력이 비어 있거나 save ""로 설정되어 있으면 RDB가 비활성화된 상태입니다.
-
redis-cli CONFIG GET save
- AOF 설정 확인:결과가 appendonly no이면 AOF가 비활성화된 상태입니다.
-
redis-cli CONFIG GET appendonly
데이터 영구성을 원하지 않을 경우
만약 Redis를 캐시로만 사용한다면, 파일로 저장하지 않는 것이 합리적입니다. 이 경우 서버 재시작 시 데이터를 복원하지 않고 새롭게 시작하는 것이 적절합니다.
결론
Redis가 기본 설정 상태이거나 파일 저장 옵션(RDB, AOF)을 활성화하지 않은 경우:
- Redis는 재부팅 시 데이터를 복원하지 않으며, 모든 데이터는 사라집니다.
- 영구적으로 데이터를 저장하려면 RDB 또는 AOF 설정을 활성화해야 합니다.
Redis의 영구 저장 여부는 사용 목적에 따라 결정해야 하며, 일반적으로 캐시 용도라면 데이터 소멸이 큰 문제가 되지 않습니다.
질문)
"RDB 파일(dump.rdb)은 Redis 서버 종료 후 재시작 시 데이터를 복원합니다." 위의 말은 리부팅후에 자동으로 복원한다는 의미인가요?
답변)
네, 맞습니다! **Redis의 RDB 파일(dump.rdb)**은 서버가 재시작될 때 자동으로 로드되어 데이터를 복원합니다.
RDB 파일의 동작 방식
- RDB 스냅샷 저장
Redis는 save 설정에 따라 메모리 상태를 주기적으로 스냅샷으로 저장합니다. 이 데이터는 디스크에 저장된 dump.rdb 파일에 기록됩니다. - Redis 서버 종료
Redis가 정상적으로 종료되면 마지막으로 저장된 RDB 파일(dump.rdb)이 디스크에 유지됩니다. - Redis 서버 재시작
Redis가 다시 시작되면, 설정된 데이터 디렉토리(기본값: /var/lib/redis/)에서 dump.rdb 파일을 자동으로 읽어 메모리에 로드합니다. 이 과정에서 저장된 데이터가 복원됩니다.
자동 복원 확인 방법
- RDB가 활성화되어 있는 경우, 서버를 재시작하면 데이터가 자동으로 복원됩니다. 이를 확인하려면 다음을 테스트해보세요:
1. 데이터 저장 및 확인
2. Redis 서버 재시작
Redis 서버를 재시작합니다:
3. 데이터 확인
다시 데이터를 확인합니다:
자동 복원의 전제 조건
- RDB 저장이 활성화되어야 함
redis.conf에서 save 옵션이 설정되어 있어야 합니다. 예를 들어: -
save 900 1 # 15분 동안 1개 이상의 키가 변경되면 저장 save 300 10 # 5분 동안 10개 이상의 키가 변경되면 저장 save 60 10000 # 1분 동안 10,000개 이상의 키가 변경되면 저장 dbfilename dump.rdb dir /path/to/directory
- RDB 파일(dump.rdb)이 손상되지 않아야 함
RDB 파일이 Redis 데이터 디렉토리에 있고 손상되지 않았을 경우에만 데이터가 복원됩니다.
주의사항
- 비정상 종료 시 데이터 손실 가능성
Redis가 강제로 종료되거나 비정상적으로 종료될 경우, 마지막 RDB 스냅샷 이후의 데이터는 손실될 수 있습니다.
이런 경우 데이터 영구성을 더 강화하려면 **AOF(Append-Only File)**을 사용하는 것이 좋습니다. - RDB 파일 경로 확인
RDB 파일이 저장되는 경로는 redis.conf의 dir 설정에 따라 다릅니다. 기본값은 /var/lib/redis/입니다. 설정을 확인하려면: -
redis-cli CONFIG GET dir redis-cli CONFIG GET dbfilename
결론
- RDB 파일이 제대로 설정되어 있다면, Redis 서버가 재시작될 때 데이터를 자동으로 복원합니다.
- 데이터 복원이 실패한다면 RDB 설정을 확인하고, 파일 손상 여부를 점검해야 합니다.
'REDIS' 카테고리의 다른 글
ServiceStack.Redis 요청 제한(평가판에서는 요청 횟수가 제한되며, 제한을 초과하면 예외가 발생하거나 연결이 차단됩니다.) (0) | 2025.01.12 |
---|---|
ServiceStack의 Redis 요청에 대한 무료 할당량을 초과(6000 Redis requests per hour) (0) | 2025.01.11 |
Caution) 중요한 데이타의 경우에 Redis 서버 설정 및 백업/복원 스크립트 작성해서, ReBoot시에 대비한다. (0) | 2025.01.09 |
Redis에서 시스템에서 사용할 수 있는 최대 메모리를 확인 (0) | 2025.01.04 |
Redis에 할당된 전체 메모리 용량을 확인 (0) | 2025.01.04 |