[Redis] redis์—์„œ ๋ฐ์ดํ„ฐ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• (RDB / AOF)

1. Redis ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ

Redis๋Š” In-memory DB ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. 

 

๊ทธ๋ž˜์„œ redis๊ฐ€ ๊บผ์กŒ๋‹ค๊ฐ€ ์žฌ์‹œ์ž‘ ๋˜๋”๋ผ๋„, ๋””์Šคํฌ์— ์ €์žฅํ•ด๋†“์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฝ์–ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์ด๋Ÿฐ ์˜์†์„ฑ ๊ธฐ๋Šฅ์€ ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ DB๋ฅผ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋กœ์„œ ํ™œ์šฉํ•œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์ด ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์— ์žฅ์• ์˜ ์ฃผ ์›์ธ์ด ๋˜๊ธฐ๋„ ํ•œ๋‹ค. 

 

 

Redis์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ RDB (snapshotting) ๋ฐฉ์‹๊ณผ AOF (Append only file) ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

 

RDB ๋ฐฉ์‹

  • ํŠน์ •ํ•œ ๊ฐ๊ฒฉ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ ˆ๋””์Šค ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ๊ฒƒ

 

AOF ๋ฐฉ์‹

  • ๋ช…๋ น์ด ์‹คํ–‰๋ ๋•Œ ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ๊ฑฐ์˜ ์—†์Œ

 

๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ณ  ํ™œ์šฉ๋ฒ•์„ ์‚ดํŽด๋ณด์ž.

 

 

2. RDB

Redis๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š”๋ฐ, Redis ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฅ์• ๋กœ ์ธํ•ด ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ด๋ฉด ์ด์ „์˜ ์ƒํƒœ๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

RDB(snapthot)๋Š” ์ˆœ๊ฐ„์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์Šค๋ƒ…์ƒท์„ ๋– ์„œ DISK์— ์˜ฎ๊ฒจ ๋‹ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ์Šค๋ƒ…์ƒท์„ ๋œฌ๋‹ค๋Š” ๋ง์€ ํŠน์ • ์‹œ์ ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๋œป์ด๋‹ค.

 

๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด Redis๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ RDB ๋ฐฉ์‹์œผ๋กœ ๋ฐฑ์—…์„ ์ง„ํ–‰ํ•œ๋‹ค. 

Redis๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ํด๋”๋กœ ๊ฐ€๋ณด๋ฉด .rdb ๋ผ๋Š” ํ™•์žฅ์ž ํŒŒ์ผ์— ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

RDB ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ์˜ snapshot์„ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๊ณ  ๋น„๊ต์  ์ž‘์€ ์‚ฌ์ด์ฆˆ์˜ ํŒŒ์ผ๋กœ ๋ฐฑ์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ์žฌ๊ตฌ๋™์‹œํ•  ๋•Œ snapshot์„ ๋‹ค์‹œ ์ฝ์œผ๋ฉด ๋˜๋ฏ€๋กœ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅธ ์žฅ์ ์ด ์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, snapshot์„ ์ถ”์ถœํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ณ  ๋„์ค‘์— ์„œ๋ฒ„๊ฐ€ ๊บผ์ง€๋ฉด ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์‹ค์ œ๋กœ SAVE ์˜ต์…˜์œผ๋กœ 50GB ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•œ๋‹ค๋ฉด 7 ~ 8๋ถ„ ์ •๋„ ์†Œ์š”๋œ๋‹ค๊ณ  ํ•œ๋‹ค. 

 

 

RDB ๊ธฐ๋ณธ ์„ค์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

  • 3600์ดˆ ์•ˆ์— 1๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ €์žฅ
  • 300์ดˆ ์•ˆ์— 100๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ €์žฅ
  •  60์ดˆ์•ˆ์— 10000๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ €์žฅ

 

 

3.1 AOF (Append Only File)

AOF(Append On File) ๋ฐฉ์‹์€ redis์˜ ๋ชจ๋“  write/update ์—ฐ์‚ฐ ์ž์ฒด๋ฅผ ๋ชจ๋‘ log ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

 

AOF๋Š” ์“ฐ๊ธฐ ๋ช…๋ น์— ๋Œ€ํ•ด ์ถ”๊ฐ€ํ•˜๋ฉฐ ๊ธฐ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๋‹ค. ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์‹œ์ž‘์‹œ ๋กœ๋”ฉ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

 

default๋กœ appendonly.aof ํŒŒ์ผ์— ๊ธฐ๋ก๋˜๋ฉฐ, ์กฐํšŒ๋ฅผ ์ œ์™ธํ•œ ์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œ ๋ช…๋ น์ด ์‹คํ–‰๋  ๋•Œ ๋งˆ๋‹ค ๊ธฐ๋ก๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๊ฐ€ ์žฌ์‹œ์ž‘๋  ๋•Œ, log์— ๊ธฐ๋ก๋œ write/update ์—ฐ์‚ฐ์„ ์žฌ ์‹คํ–‰ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ Redis ์— ์—…๋ฐ์ดํŠธ ๊ด€๋ จ ๋ช…๋ น์„ ์š”์ฒญํ•œ๋‹ค.
  2. Redis ๋Š” ํ•ด๋‹น ๋ช…๋ น์„ AOF์— ์ €์žฅํ•œ๋‹ค.
  3. ํŒŒ์ผ์“ฐ๊ธฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์‹ค์ œ๋กœ ํ•ด๋‹น ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ด์„œ Redis ๋ฉ”๋ชจ๋ฆฌ์— ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•œ๋‹ค. 

 

์ด์ฒ˜๋Ÿผ, operation์ด ๋ฐœ์ƒํ• ๋•Œ ๋งˆ๋‹ค ๋งค๋ฒˆ ๊ธฐ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ, RDB ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํŠน์ • ์‹œ์ ์ด ์•„๋‹ˆ๋ผ ํ•ญ์ƒ ํ˜„์žฌ ์‹œ์ ๊นŒ์ง€์˜ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ non-blocking ์œผ๋กœ ๋™์ž‘ ๋œ๋‹ค. 

 

AOF๋Š” log ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ appendํ•˜๊ธฐ ๋•Œ๋ฌธ์— log write ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์–ด๋–ค ์‹œ์ ์— ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. RDB๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด๋ผ์„œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ, AOF ๋กœ๊ทธ ํŒŒ์ผ์€ text ํŒŒ์ผ์ด๋ฏ€๋กœ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

AOF ํ™œ์šฉ ์˜ˆ์‹œ
๋งŒ์ผ ์‹ค์ˆ˜๋กœ flushall ๋ช…๋ น์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋‚ ๋ ธ์„ ๋•Œ, ๋ ˆ๋””์Šค ์„œ๋ฒ„๋ฅผ shutdownํ•˜๊ณ  appendonly.aof ํŒŒ์ผ์—์„œ flushall ๋ช…๋ น์„ ์ œ๊ฑฐ ํ•œ ํ›„ ๋ ˆ๋””์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์†์‹ค์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 AOF ํ•ญ๋ชฉ

  • appendolny
    • AOF ํŒŒ์ผ ์‚ฌ์šฉ ์—ฌ๋ทฐ 
    • yes / no
  • appendfilename
    • AOF ํŒŒ์ผ ์ด๋ฆ„ ์„ค์ •
  • appendfsync
    • ์šด์˜์ฒด์ œ์˜ fsync()์— ์˜ํ•œ ์ง€์—ฐ๋œ ์“ฐ๊ธฐ ์˜ต์…˜ (๋ฉ”๋ชจ๋ฆฌ => ๋””์Šคํฌ)
    • no: fsync() ์‚ฌ์šฉ ์—†์ด ์ฆ‰์‹œ ์“ฐ๊ธฐ, ๊ฐ€์žฅ ๋น ๋ฆ„
    • always: ํ•ญ์ƒ fsync() ์‚ฌ์šฉ
      • ๋Š๋ฆฌ์ง€๋งŒ ์•ˆ์ „ํ•จ
      • ๋ฐ์ดํ„ฐ ์œ ์‹ค์˜ ์—ผ๋ ค๋Š” ์—†์œผ๋‚˜, ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋–จ์–ด์ง

 

 

3.2 AOF redis.conf ์„ค์ • ๋ฐฉ์‹

๋ ˆ๋””์Šค๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ฝ๋Š”๋‹ค.

์ด๋•Œ ์–ด๋–ค ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ฝ์„์ง€๋Š” redis.conf ์„ค์ • ํŒŒ์ผ์˜ appendonlyfile ์„ค์ •์„ ๋”ฐ๋ฅด๊ฒŒ ๋œ๋‹ค. 

 

 

AOF ํ™œ์„ฑํ™”

์ฒ˜์Œ redis๋ฅผ ์„ค์น˜ํ•˜๊ณ  confํŒŒ์ผ์„ ๋ณด๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋˜์–ด์žˆ๋‹ค. no ๋ฅผ yes๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด aof ๋ฅผ ํ™œ์„ฑํ™” ์‹œ์ผœ์ฃผ์ž.

 

appendonly yes
  • appendonlyfile yes : aof ํŒŒ์ผ์„ ์ฝ์Œ 
  • appendonlyfile no : rdb ํŒŒ์ผ์„ ์ฝ์Œ

 

 

 

aof์— ๊ธฐ๋ก๋˜๋Š” ์‹œ์ ์„ ์ง€์ •

appendfsync๋Š” appendonly ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์“ฐ์—ฌ์ง€๋Š” ์‹œ์ ์„ ์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋‹ค. AOF ๋Š” ํŒŒ์ผ์— ์ €์žฅํ•  ๋•Œ ํŒŒ์ผ์„ ๋ฒ„ํผ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ  ์ ์ ˆํ•œ ์‹œ์ ์— ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๋Š”๋ฐ appendfsync ๋Š” ๋””์Šคํฌ์™€ ๋™๊ธฐํ™”๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ์„ค์ •ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐ€์ง€ ์˜ต์…˜์ด ์กด์žฌํ•œ๋‹ค.

 

always : ๋ช…๋ น ์‹คํ–‰ ์‹œ ๋งˆ๋‹ค AOF์— ๊ธฐ๋ก. ๋ฐ์ดํ„ฐ ์œ ์‹ค์€ ๊ฑฐ์˜ ์—†์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋–จ์–ด์ง.

everysec : 1์ดˆ๋งˆ๋‹ค AOF์— ๊ธฐ๋ก. ๊ถŒ์žฅ

no : AOF์— ๊ธฐ๋กํ•˜๋Š” ์‹œ์ ์„ OS๊ฐ€ ์ •ํ•จ(์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ๋ˆ…์Šค์˜ ๋””์Šคํฌ ๊ธฐ๋ก ๊ฐ„๊ฒฉ์€ 30์ดˆ). ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋  ์ˆ˜ ์žˆ์Œ

 

 

 

 

AOF Rewrite ์„ค์ •

rewrite๋ž€ AOF ํŒŒ์ผ์˜ ์ƒํƒœ๊ฐ€ ํŠน์ • ์กฐ๊ฑด(ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ ์–ผ๋งˆ ์ด์ƒ) ์ผ ๋•Œ AOF ํŒŒ์ผ์„ ํ˜„์žฌ ์ƒํƒœ์— ๋งž์ถฐ์„œ ์„ค์ •์— ๋”ฐ๋ผ ๋ฎ์–ด์“ฐ๊ธฐ ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

 

์ฒ˜์Œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘ํ•  ์‹œ์ ์˜ AOF ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ 100% ์ด์ƒ ์ปค์ง€๋ฉด rewrite ํ•˜๊ฒŒ ๋˜์–ด์žˆ๋‹ค.

 

๋งŒ์•ฝ ๋ ˆ๋””์Šค ์„œ๋ฒ„ ์‹œ์ž‘ ์‹œ AOF ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ 0์ด์—ˆ๋‹ค๋ฉด, auto-aof-rewrite-min-size๋ฅผ ๊ธฐ์ค€์œผ๋กœ rewrite ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ min-size๊ฐ€ 64mb ์ดํ•˜์ด๋ฉด rewrite๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํŒŒ์ผ์ด ์ž‘์„ ๋•Œ rewrite๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋ ˆ๋””์Šค ์„œ๋ฒ„๊ฐ€ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ 1mb ์‚ฌ์ด์ฆˆ์˜€๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด 2mb๊ฐ€ ๋์„ ๋•Œ rewrite๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด min-size ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

 

3.3 AOF๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์œ ์‹ค๋œ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌํ•˜๊ธฐ

redis์— ์—ฌ๋Ÿฌ ๊ฐ’์ด ์žˆ๋‹ค๊ฐ€ db๊ฐ€ ์ „๋ถ€ ๋‚ ๋ผ๊ฐ”์„ ๋•Œ ์ด๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž.

 

์šฐ์„  dummy data๋ฅผ ๋„ฃ๊ณ , flushall ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ๋‚ ๋ ค์ฃผ์—ˆ๋‹ค.

 

 

ubuntu ๊ธฐ์ค€์œผ๋กœ appendonly.aof ํŒŒ์ผ์€ /var/lib/redis/appendonly.aof ์œ„์น˜์— ์ €์žฅ๋œ๋‹ค. 

  • AOF๋Š” ๋ช…๋ น ์‹คํ–‰ ์ˆœ์„œ๋Œ€๋กœ ํ…์ŠคํŠธ๋กœ ์“ฐ์—ฌ์ฆˆ๋ฉฐ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • * ๋Š” ๋ช…๋ น ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ˆซ์ž๋Š” ๋ช…๋ น๊ณผ ์ธ์ˆ˜์˜ ๊ฐœ์ˆ˜์ด๋‹ค.
  • $ ๋Š” ๋ช…๋ น์ด๋‚˜ ์ธ์ˆ˜, ๋ฐ์ดํ„ฐ์˜ ๋ฐ”์ดํŠธ ์ˆ˜์ด๋‹ค. (ํ•œ๊ธ€์€ UTF8๋กœ ํ–ˆ์„ ๊ฒฝ์šฐ ํ•œ ๊ธ€์ž์— 3๋ฐ”์ดํŠธ)

 

 

์ด์ œ ํŽธ์ง‘๊ธฐ๋กœ flushall์„ ์ง€์›Œ์ฃผ๊ณ  ์ €์žฅํ•ด์ฃผ์ž.

๊ทธ๋ฆฌ๊ณ  redis๋ฅผ ์žฌ์‹œ์ž‘ ํ•ด์ฃผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต๊ตฌ๋˜์–ด์žˆ๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

4. RDB VS AOF ์„ ํƒ ๊ธฐ์ค€

RDB ์‚ฌ์šฉ ์ฃผ์˜ํ•  ์ 

RDB(Snapshot) ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ ์€ ๋งค์šฐ ๋ช…ํ™•ํ•œ๋ฐ, Redis์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐฑ์—… ์‹œ์ ์„ ์ œ์™ธํ•œ ์ค‘๊ฐ„ ์‹œ์ ์—์„œ ๋ฐœ์ƒํ•œ ๋ฐ์ดํ„ฐ๋Š” ์œ ์‹ค๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

RDB ๋ฐฉ์‹์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” save, bgsave ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

save๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ๊นŒ์ง€ ๋ชจ๋“  ์š”์ฒญ์ด ๋Œ€๊ธฐํ•˜๊ฒŒ ๋œ๋‹ค. 

๋”ฐ๋ผ์„œ bgsave ๋ช…๋ น์–ด๋กœ background ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๋ฐฑ์—… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋Š” ํŽธ์ด๊ณ , default ๊ฐ’์€ bgsave์ด๋‹ค. 

 

 

ํ•˜์ง€๋งŒ bgsave ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•  ๋• ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์„ ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค. 

 

redis ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ ์œ„์— ์žˆ๋Š”๋ฐ ์ด๋ฅผ “์„œ๋น„์Šค ์˜ํ–ฅ ์—†์ด” ์Šค๋ƒ…์ƒท์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Copy-on-Write(COW) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ž์‹ ํ”„๋กœ์„ธ์Šค fork() ํ›„ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„๋งŒ ๋ณต์‚ฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋งŒ์ผ write ์ž‘์—…์ด ๋งŽ์•„์„œ ๋ถ€๋ชจ ํŽ˜์ด์ง€ ์ „๋ถ€์— ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ ํŽ˜์ด์ง€ ์ „๋ถ€๋ฅผ ๋ณต์‚ฌํ•˜๊ฒŒ ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

AOF ์‚ฌ์šฉ ์ฃผ์˜ํ•  ์ 

์–ธ๋œป ๋ณด๋ฉด "์“ฐ๊ธฐ ์ž‘์—…์˜ ๊ธฐ๋ก์„ ์ €์žฅํ•ด replayํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณต๊ตฌ ํ• ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์ ์ด๊ณ ์— ์ด์ƒ์ ์ด์ง€ ์•Š๋Š๋ƒ" ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ๋‹จ์ˆœํžˆ ๊ทธ๋ ‡์ง€๋งŒ์€ ์•Š๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด 0์ด๋ผ๋Š” ์ •์ˆ˜ํ˜•์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

100๋ฒˆ์˜ Increment ์ž‘์—…์„ ํ†ตํ•ด 100์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด AOF์—์„  100๊ฐœ์˜ ๋ช…๋ น ๊ธฐ๋ก์„ ์ €์žฅํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. 

RDB ๋ฐฉ์‹์ด์—ˆ๋‹ค๋ฉด ๋‹จ์ˆœํžˆ 100์ด๋ž€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋ฉด ๋˜๋Š” ์ž‘์—…์ด์ง€๋งŒ AOF์ผ ๊ฒฝ์šฐ 100๋ฒˆ์˜ ๋ช…๋ น ์ž‘์—…์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•ด์•ผํ•œ๋‹ค. 

 

์ด๋Ÿฐ ์ž‘์—…์—์„  AOF๋Š” ์ทจ์•ฝํ•˜๋‹ค. 

 

 

๊ทธ๋Ÿผ ์–ด๋–ค ๋ฐฉ์‹์„ ์ฑ„ํƒํ•ด์•ผํ• ๊นŒ??

๋ฐฑ์—…์ด ํ•„์š”๋Š” ํ•˜์ง€๋งŒ ์–ด๋Š ์ •๋„์˜ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๊ฐ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ RDB๋ฅผ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹๊ณ 

 

์žฅ์•  ์ƒํ™ฉ ์ง์ „๊นŒ์ง€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์žฅ๋˜์–ด์•ผ ํ•  ๊ฒฝ์šฐ AOF๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

 

ํ•˜์ง€๋งŒ RDB์™€ AOF ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ ์„ ์ƒ์‡„ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์„ ํ˜ผ์šฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค. 

์ฃผ๊ธฐ์ ์œผ๋กœ RDB๋กœ ๋ฐฑ์—…ํ•˜๊ณ , ๋‹ค์Œ snapshot๊นŒ์ง€์˜ ์ €์žฅ์„ AOF๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹์œผ๋กœ ํ˜ผ์šฉํ•œ๋‹ค. 

 

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์„œ๋ฒ„๊ฐ€ ์žฌ์‹œ์ž‘๋  ๋•Œ ๋ฐฑ์—…๋œ RDB ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ณ , ๋น„๊ต์  ์ ์€ ์–‘์˜ AOF ๋กœ๊ทธ๋งŒ ์ฝ์–ด๋“œ๋ฆฌ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์œ ์‹ค์„ ์™„์ „ํžˆ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ ๊ฐ์ž์˜ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋ฐฑ์—… ๋ฐฉ์‹์„ ์„ค์ •ํ•ด ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹ต์€ ์—†๋‹ค.