반응형
AOF(Append Only File) 이란?
- Redis 에서 데이터의 영구 저장을 위하여 지원하는 두번째 기능.
- Redis 가 수신하는 모든 쓰기 명령을 aof 파일에 기록하여 데이터를 보관함.
- 알기쉽게 말하면, MySQL 의 bin 로그와 유사하다고 보면됨.
- AOF 파일은 수정이나 삭제가 필요 없으며 명령어를 파일의 마지막에 기록할 뿐이므로, 데이터의 정합성 유지에 용이함.
- Redis 관련 시스템 장애시 마지막 명령의 기록이 완전하지 않을 경우에는 Redis가 제공하는 redis-check-aof 툴을 사용하여 aof파일의 잘못된 부분을 고칠 수 있는 기능 지원.
- flushall 명령과 같은 잘못 전달된 명령에 의하여 데이터를 완전히 잃어버리는 사태를 방지할 수 있음.
- 즉, 만약 데이터가 삭제되었으면, 기존 Redis 서버를 잠시 중지시키고, aof 파일을 열어서 마지막에 기록된 flushall 명령을 제거하고 Redis를 다시 시작하면 됨.
- AOF 파일은 스냅샷에 비해서 더 많은 디스크 용량을 차지함.
- 모든 명령어를 일일이 파일에 기록하므로 스냅샷에 비하여 더 느린 응답시간을 제공함.
- 느리다는 것은 스냅샷에 비해서 상대적으로 느리다는 말이니, 오해하시지 않기를..
- 통상적으로 AOF 는 스냅샷에 비하여 평균적으로 약 5~10% 정도의 응답시간 저하가 있을 수 있음.
- 즉, 느리다고 매우 큰 성능 저하가 일어나는 것은 아님.
- 느리다는 것은 스냅샷에 비해서 상대적으로 느리다는 말이니, 오해하시지 않기를..
AOF와 스냅샷 정합성 비교
- 예전에 설명드린 스냅샷에 비해 더 나은 데이터 정합성을 보장함.
- 스냅샷은 각 스냅샷 사이의 데이터를 잃어버리지만, AOF는 최악의 상황에서 마지막 1초의 데이터만을 잃어 버리기 때문에..
AOF 파일 구조
- AOF 파일 구조를 아래 테스트를 통해서 알아보자.
- 하나, Redis 설정에 appendonly 설정을 yes 로 하여 Redis 실행.
- redis.conf 에서 아래 와 같이 환경설정 수정 후 재기동
- redis.conf 에서 아래 와 같이 환경설정 수정 후 재기동
- 둘, Redis 클라이언트에서 아래 명령을 실행
- redis> set tkey1 "thub.magic" / get tkey1
-
- 위의 appendonly.aof 파일의 내용은 이전에 설명해드린, Redis 프로토콜 데이터 파일과 동일함.
- 다시말해서 aof 파일은 레디스 명령어를 Redis 프로토콜형식으로 저장하고 Redis 가 재시작할 때 다시 동일한 명령어를 실행하여 데이터의 정합성을 유지하게 됨.
- 기동시 모든 명령어를 다시 실행하기 때문에 상대적으로 스냅샷에 비하여 데이터 로드 시간이 오래 걸림.
- 다시말해서 aof 파일은 레디스 명령어를 Redis 프로토콜형식으로 저장하고 Redis 가 재시작할 때 다시 동일한 명령어를 실행하여 데이터의 정합성을 유지하게 됨.
- 위의 appendonly.aof 파일의 내용은 이전에 설명해드린, Redis 프로토콜 데이터 파일과 동일함.
-
- redis> set tkey1 "thub.magic" / get tkey1
- 하나, Redis 설정에 appendonly 설정을 yes 로 하여 Redis 실행.
결론
- Redis는 AOF(Append Only File)라는 기능을 제공해서 데이터 백업을 할 수 있는 기능을 지원함.
- 유사시에 이 기능으로 인해 시스템 서버장애 발생 시 데이터가 유실되는 부분을 차단하고 복원함.
- Redis는 AOF 는 모든 명령어를 일일이 파일에 기록하므로 스냅샷에 비하여 더 느린 응답시간을 제공함.
- 금일도 Redis AOF 기능에 대한 마술(?) 한가지 획득완료, 감사합니다. ^^
- 오늘의 명언 한마디
- "지금 가진 것에 만족하면 하던일이나 계속하라."
- 무슨뜻이냐고? 멈추라는 말이다! 지금 부자가 아니라면, 현재 하고 있는 일을 그만둬라.
- 전통적 방식으로 돈 버는 지혜를 버려라.
- 사람들을 따라 하고 틀린 방법을 계속해서 적용하는 일을 그만둬라.
- 꿈을 제쳐두고 평범한 삶으로 나아가는 길에서 벗어나라.
- 한마디로, 당신은 이제까지 배운 것을 잊어야 한다.
- 엠제이 드마코 지음, "부의 추월차선" 중에서
- "지금 가진 것에 만족하면 하던일이나 계속하라."
- 오늘의 영어 한마디
- 질문) Are you interested in this?
- 이런 것에 흥미 있어?
- 응답) Sure. I am!
- 물론이지.
- 해설
- "be interested in" 은 ~에 흥미가 있다.라는 의미.
- 위의 물론은 Of course. 라고 해도됨.
- 위의 "Are you interested ~?" 구문은 "~해보고 싶어?" 또는 " 더 알고 싶어?", " 좋아해?" 라는 의미로도 해석할 수 있음.
- 질문) Are you interested in this?
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하는방법 (0) | 2023.03.15 |
---|---|
35.Redis, 레디스에서 루아(Lua) 스크립트를 한번 실행해 볼까요? (0) | 2021.01.15 |
33.Redis, 레디스의 스냅샷에 대해서 알아보자구요! ^^ (0) | 2021.01.15 |
32.Redis, 레디스 설정(redis.conf) 에 대해서 알아보자구요.^^ (0) | 2021.01.15 |
31.Redis, 운영 시 메모리 설정은 어떻게 해야 할까요? (0) | 2021.01.15 |