Database/Redis

[Redis] AOF 파일의 저장 방식

꽁담 2020. 3. 5. 17:32

Redis AOF 란


레디스는 데이터를 메모리에 저장합니다.

레디스가 내려가면 메모리 상에 있던 데이터는 모두 유실됩니다.


이 유실을 방지하기 위해 AOF 기능을 제공하고 있습니다.

AOF 는 Append Only File의 약자로, 적재, 수정, 삭제 명령이 실행될 때마다 파일에 기록되며 수정이 가능합니다.


AOF 는 파라미터에 따라 '명령어가 수행될 때마다; 1초마다; OS 에서 알아서' 방식으로 디스크에 쓰여집니다.


Redis AOF 저장 방식



수정 명령이 실행되는 경우 레디스는 메모리에 있는 데이터 자체를 변경시킵니다.

그러나 AOF 에 저장될 때는 명령어를 파일 끝에 기록만 합니다.


Append 명령어를 사용해서 데이터를 수정해 보도록 하겠습니다.

( Append 는 기존에 있는 키 값에 문자열을 덧붙이거나, 키가 없으면 데이터를 저장하는 명령어 입니다. )


메모리 상의 데이터 조회

메모리 상에서 데이터를 조회하게 되면 이전의 값은 없어지고, 수정한 값을 얻을 수 있습니다.

1
2
3
4
5
6
7
8
127.0.0.1:6379> set test 'Apple'
OK
127.0.0.1:6379> get test
"Apple"
127.0.0.1:6379> append test 'Banana'
(integer) 11
127.0.0.1:6379> get test
"AppleBanana"
cs


AOF 파일의 데이터 조회

그러나 AOF 파일을 확인하게 되면 아래와 같이 수행한 모든 명령어가 저장되어 있습니다.

Line 1 : 모든 명령어 기록은 항상 * 로 시작됩니다. * 는 명령의 시작을 나타내고, * 다음 숫자는 명령을 구성하고 있는 단어 개수를 나타냅니다. 'set key value' 세 개의 단어로 구성되어 있습니다.

Line 2 : $ 는 요소를 나타내며, $ 뒤 숫자는 요소의 글자 수를 나타냅니다.

Line 3 : 명령 자체가 기록되어 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
*3
$3
set
$4
test
$5
Apple
*3
$6
append
$4
test
$6
Banana
cs