블로그는 나의 힘!
[ Programing ]/Redis2025. 2. 20. 10:28

메모리에만 저장되어 있던 캐시 장애가 발생했을 경우, 
유실을 방지하고자 디스크에 저장하는 기능도 제공하고 있습니다. 

스냅샷을 저장하는 방식인 `RDB`, 
명령어 단위를 저장하는 `AOF` 
방식을 통해 영속성을 유지할 수 있습니다. 



# RDB
RDB란, `Redis Database`라는 뜻으로 특정 시점마다 데이터를 `snapshot`형태로 디스크 저장합니다.
저장은 `바이너리 형식`으로 저장이 됩니다. 

다양한 Collection을 binary 형식으로 직렬화하여 `.rdb`파일에 저장하며, 사람이 직접 읽기는 불가능합니다. 
바이너리 형식이기 때문에, 
파일 크키에 대해 부담도 적으며 빠르게 읽을 수 있습니다. 
그렇기에 장애가 발생했을 경우, 빠른 복원도 가능해집니다.

snapshot을 저장하고, 
다음 snapshot 저장되기 전에, 오류가 발생했을 경우 그 사이 데이터는 유실 가능성이 큽니다.
이러한 상황을 최대한 방지하기 위해 `redis.conf`에서 스냅샷 조건을 설정할 수 있게 됩니다.

너무 짧을 경우 매번 snapshot 형태로 저장하기 위해 CPU와 메모리를 많이 사용될 수 있습니다. 
그렇다고 너무 길게 설정하게 되면, 데이터의 유실 범위가 커지게 됩니다.




# AOF
메모리에서 작동했던 모든 쓰기 연산의 명령어 (SET, HSET, LPUSH 등)를 디스크에 `순서대로` 저장합니다. 

명령을 입력하면, 파일 맨 끝에 명령어를 append하여 저장하게 됩니다. 
그리하여 AOF, `Append Only File`이라고 합니다. 
서버 재시작 시에 AOF 파일을 처음부터 재실행하며 데이터 상태를 가장 최신으로 유지할 수 있게 됩니다.

명령어 입력때 마다 저장을 하기 때문에, 
RDB 같이 데이터가 유실될 가능성이 거의 없습니다.


별도의 동기 시점을 `appendfsync`을 통해 설정할 수 있습니다. 
appendfsync는 얼마나 자주 동기화할지 정하는 방식으로, 아래와 같습니다.
- always 
: 명령어 실행 때마다 `fsync()`를 호출하여 저장하게 됩니다. 
  장애 발생 시 완전한 일관성 보장을 할 수 있지만, 매번 I/O 발생하여 성능 부하 가능성이 커집니다.

- everysec (default) 
매 초마다 처리를 합니다. 
  즉시 작성은 아니지만, 어느 정도의 성능 저하를 최소화할 수 있습니다.

- no 
: Redis가 `fsync()`호출하여 저장하는 방식이 아닌, OS 내에서 저장하는 방식입니다. 
  성능 면에서는 제일 빠를 수는 있지만, 장애 발생하면 위 옵션들보다 데이터 유실량이 클 가능성이 있습니다.


appendonly (yes / no)
: aof 파일 데이터 저장 유무 설정.
   RDB는 off에 Cluster 환경에서 Master는 yes, Slave에 no로 설정 시 롤 체인지 되면 데이터 유실 가능성 있음.




추가로 시간이 지날수록 파일의 크기가 커진다는 문제가 있으며 
처음부터 명령어를 실행하는 과정에서 데이터의 양이 많아지게 되면, 실행 시간이 늘어날 수 있습니다.
RDB와 AOF 두 가지 모두 적절히 사용하게 되면, 데이터의 유실을 최소화할 수 있습니다. 




 

출처 : 124 [레디스] Redis의 데이터 영구 저.. : 네이버블로그

 

124 [레디스] Redis의 데이터 영구 저장 개념 RDB, AOF에 대해서

관련글 🔗 117 [레디스] Redis 정의 및, Collection 정리 🔗 118 [레디스] Redis와 Memcached 차이...

blog.naver.com



 

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

Redis 레퍼런스.  (0) 2024.05.21
[Redis] Reference  (0) 2023.03.02
[Linux] Redis Cluster 설정  (0) 2022.10.20
[Linux] Redis wget 설치  (0) 2022.10.20
Redis 명령어  (0) 2021.04.21
Posted by Mister_Q
[ Other ]/말말말2025. 2. 14. 12:53

"고통이 너를 붙잡고 있는 것이 아니다. 너가 고통을 붙잡고 있는 것이다."


"행복으로 가는 길은 없다. 행복이 곧 길이다."


"과거가 얼마나 힘들었든 간에 너는 항상 다시 시작할 수 있다."


"판단하지 마라. 기대하지 마라. 그것이 왜 너에게 일어났는지 고민할 필요 없다. 내려놓아라."


"다른 누구로도 아닌, 오직 스스로를 등불로 삼아 의지하라."


"슬퍼하지 마라, 탄식하지 마라, 아난다여. 그처럼 말하지 않았더냐.
 태어나고 형성된 모든 것은 없어지기 마련이고, 달라지기 마련이라고." 



"게으르지 말고 해야 할 바를 모두 달성하라. 이것이 여래의 마지막 유훈이다."




- 붓다, 기원전 2500년경 (youtube.com/watch?v=g4xh9MBT8_8)

 

'[ Other ] > 말말말' 카테고리의 다른 글

주말에 tv만 끼고 사는 남편  (7) 2018.07.28
다수가 아닌 소수 일뿐...  (0) 2017.08.22
난 행복한 사람 (?!)  (0) 2016.06.20
일방적인 사과...  (0) 2016.05.16
간섭과 조언의 차이  (0) 2015.08.15
Posted by Mister_Q
  • atoi, atol, atoll : null 종료 문자열을 정수로 바꾼다.
  • stoul, stoull : 문자열을 부호 없는 정수로 바꾼다.
  • stof, stod, stold : 문자열을 부동 소수점 값으로 바꾼다.
  • to_string : 정수나 부동 소수점 값을 문자열로 바꾼다.



std::string to_string( int value );
std::string to_string( long value );
std::string to_string( long long value );
std::string to_string( unsigned value );
std::string to_string( unsigned long value );
std::string to_string( unsigned long long value );
std::string to_string( float value );
std::string to_string( double value );
std::string to_string( long double value );




출처 : C++ 레퍼런스 - string 의 stoi, stol, stoll 함수

 

C++ 레퍼런스 - string 의 stoi, stol, stoll 함수

모두의 코드 C++ 레퍼런스 - string 의 stoi, stol, stoll 함수 작성일 : 2019-09-19 이 글은 20170 번 읽혔습니다. string 혹은 wstring 문자열 str 을 base 진법을 사용하는 부호 있는 정수로 변환한 값을 리턴한다.

modoocode.com

std::to_string - cppreference.com

 

std::to_string - cppreference.com

(1) (since C++11) (2) (since C++11) (3) (since C++11) (4) (since C++11) (5) (since C++11) (6) (since C++11) (7) (since C++11) (8) (since C++11) (9) (since C++11) Converts a numeric value to std::string. Let buf be an internal to the conversion functions bu

en.cppreference.com


 

'[ Programing ] > STL & Booster' 카테고리의 다른 글

C++ atoi 문자를 정수로 stoi, stol, stoll  (0) 2025.02.11
boost::thread_group  (0) 2023.06.26
C++ STL mutex  (0) 2022.01.21
C++ STL fill_n / fill  (0) 2021.01.22
C++ STL Function  (0) 2020.09.14
Posted by Mister_Q