Redis Persistence
Redisμμ λ°μ΄ν°λ₯Ό μꡬ μ μ₯νλ λ°©λ²
Redis Persistence
Redisλ λΉ λ₯Έ μ±λ₯μΌλ‘ μ λͺ ν μΈλ©λͺ¨λ¦¬ λ°μ΄ν° μ μ₯μμ΄μ§λ§, μλμ κ°μ νΉμ±μ΄ μ‘΄μ¬νλ€.
μλ² μ¬μμ μ λͺ¨λ λ°μ΄ν° μ μ€
볡μ κΈ°λ₯μ μ¬μ©ν΄λ μ¬λμ μ€μκ° λ°μνλ©΄ λ°μ΄ν° 볡μ λΆκ°λ₯
μΊμ μ΄μΈμ μ©λλ‘ μ¬μ© μ μ μ ν λ°μ΄ν° λ°±μ μ΄ νμ
λ°λΌμ λ°μ΄ν° μμ€μ λ°©μ§νκΈ° μν κ°λ ₯ν μμμ± μ΅μ λ μ 곡νλ€.
Persistence Option
Redisλ λ°μ΄ν°λ₯Ό μꡬμ μΌλ‘ μ μ₯νκΈ° μν λ κ°μ§(AOF, RDB) λ°©μμ μ 곡νλ€.
1. AOF(Append Only File)
AOFλ Redisμ λ°μ΄ν°λ₯Ό λ³κ²½νλ λͺ¨λ λͺ λ Ήμ΄λ₯Ό μμ°¨μ μΌλ‘ μ μ₯νλ λ°©μμ΄λ€. μ¦, λ°μ΄ν°λ₯Ό λ³κ²½νλ 컀맨λκ° λ€μ΄μ€λ©΄ 컀맨λλ₯Ό κ·Έλλ‘ μ μ₯νλ€.
μλ₯Ό λ€μ΄, key1μ κ°μ΄ λ³κ²½λκ³ key2κ° μμ λμλ€λ©΄ ν΄λΉ 컀맨λ κΈ°λ‘μ΄ λͺ¨λ λ¨μμλ€.
μ£Όμ νΉμ§:
λͺ¨λ λ°μ΄ν° λ³κ²½ λͺ λ Ήμ΄ κΈ°λ‘λμ΄, λ°μ΄ν°μ λ³κ²½ μ΄λ ₯μ μλ²½νκ² μΆμ ν μ μλ€.
νΉμ ν€μ κ°μ΄ λ³κ²½λκ±°λ μμ λλ λͺ¨λ λͺ λ Ήμ΄ κ·Έλλ‘ κΈ°λ‘λκ³ μ΄μ²λΌ λͺ λ Ήμ΄ μ 체λ₯Ό κΈ°λ‘νκΈ° λλ¬Έμ RDB λ°©μμ λΉν΄ νμΌ ν¬κΈ°κ° ν¬λ€.
νμΌ ν¬κΈ° κ΄λ¦¬λ₯Ό μν΄μλ μ£ΌκΈ°μ μΌλ‘ μμΆνμ¬ μ¬μμ±(rewrite)νλ κ³Όμ μ΄ νμνλ€.
μ€μ λ‘ AOF νμΌμ Redis νλ‘ν μ½ νμμΌλ‘ μ μ₯λμ΄ μΌλ°μ μΈ ν μ€νΈλ‘ μ½μ μ μλ€.
AOF μμ± λ°©λ²:
μλ μμ±:
redis.confνμΌμμauto-aof-rewirte-percentageμ΅μ μ ν΅ν΄ νμΌ ν¬κΈ° κΈ°μ€μΌλ‘ μ¬μμ± μμ μ μ§μ ν μ μλ€.μλ μμ±:
BGREWRITEAOFλͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μλμΌλ‘ AOF νμΌμ μ¬μμ±ν μ μλ€.
2. RDB(Redis Database)
RDBλ νΉμ μμ μ λ©λͺ¨λ¦¬ λ°μ΄ν°λ₯Ό μ€λ μ· ννλ‘ μ μ₯νλ λ°©μμ΄λ€.
μλ₯Ό λ€μ΄, key1μ κ°μ΄ λ³κ²½λκ³ key2μ λ°μ΄ν°κ° μμ λμλ€λ©΄ key1μ λ³κ²½ κ°λ§ μ μ₯λλ€.
μ£Όμ νΉμ§:
μ μ₯ μμ μ λ©λͺ¨λ¦¬ λ°μ΄ν°λ₯Ό λ°μ΄λ리 ννλ‘ μ μ₯νλ€.
μ¬λ¬ λ²μ λ°μ΄ν° λ³κ²½μ΄ μλλΌλ μ΅μ μνλ§μ μ μ₯νλ€.
AOFμ λΉν΄ νμΌ ν¬κΈ°κ° μκ³ λ‘λ© μλκ° λΉ λ₯΄λ€.
μ€λ μ· μμ± μμ μ¬μ΄μ λ°μ΄ν°κ° μ μ€λ μ μλ€.
RDB νμΌ μμ± λ°©λ²:
μλ μμ±:
redis.confνμΌμSAVEμ΅μ μ ν΅ν΄ μκ° κΈ°μ€μΌλ‘ μ μ₯ μ£ΌκΈ°λ₯Ό μ€μ ν μ μλ€.μλ μμ±:
BGSAVEλͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μλμΌλ‘ RDB νμΌμ μ μ₯ν μ μμ΅λλ€.SAVEλͺ λ Ήμ΄λ μ‘΄μ¬νμ§λ§, Redis μλ²λ₯Ό λΈλ‘νΉνλ―λ‘ μ€μ μ΄μ νκ²½μμλ μ¬μ©μ (μ λ) νΌν΄μΌ νλ€.
AOF vs RDB μ ν κΈ°μ€
λ§μ½ Redisλ₯Ό λ¨μ μΊμλ‘λ§ μ¬μ©νλ€λ©΄ μμμ± μ΅μ λ€μ νμλ‘ νμ§λ μλλ€. νμ§λ§ λ°μ΄ν° λ³΄μ‘΄μ΄ νμν κ²½μ° μ΄λ€ μμμ± μ΅μ μ μ¬μ©ν μ§ κ³ λ―Όν΄ λ΄μΌ νλ€.
λ°±μ μ νμνμ§λ§ μ΄λ μ λμ λ°μ΄ν° μμ€μ΄ νμ©λλ κ²½μ°
RDBλ§ λ¨λ μΌλ‘ μ¬μ©νλ€.
redis.conf νμΌμμ SAVE μ΅μ μ μ μ νκ² μ¬μ©νλ€.
ex)
save 900 1μ€μ μ 900μ΄ λμ μ΅μ ν κ° μ΄γ γ γ μ ν€ λ³κ²½μ΄ μμ λ RDB νμΌμ μ¬μμ±(μμ±) νλΌλ μλ―Έμ΄λ€.
μ₯μ μν© μ§μ κΉμ§μ λ°μ΄ν°λ₯Ό 보μ₯ν΄μΌ νλ κ²½μ°
AOF μ¬μ©. (appendonly yes)
appendsynceμ΅μ μ΄ κΈ°λ³Έκ°μΈeverysecμΌ κ²½μ° μ΅λ 1μ΄ μ¬μ΄μ λ°μ΄ν°λ§ μμ€ κ°λ₯μ±μ΄ μλ€.
μ΅κ³ μμ€μ λ°μ΄ν° λ΄κ΅¬μ±μ΄ νμν κ²½μ°
Redis 곡μ λ¬Έμμμ κΆμ₯νλ λ°©μμΌλ‘, AOFμ RDBλ₯Ό λμμ μ¬μ©
AOFμ appendfsync μ΅μ μλ always, everysec, no μ€μ μ΄ μμΌλ©° κ°κ° λ°μ΄ν° μμ μ±κ³Ό μ±λ₯ μ¬μ΄μ νΈλ μ΄λ μ€νκ° μ‘΄μ¬νλ€.
RDB λ°©μμ fork()λ₯Ό μ€μ©νμ¬ μμ νλ‘μΈμ€λ₯Ό μμ±νλ―λ‘, λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μκ°μ μΌλ‘ 2λ°°κ° λ μ μλ€λ μ μ κ³ λ €ν΄μΌ νλ€.
Last updated