β¨ Caching Solution
μΊμ±μ μ΄ν리μΌμ΄μ μ±λ₯ ν₯μμ κ°μ₯ λ§μ΄ κΈ°μ¬νλ λ¨κ³μ΄λ€. μΊμ μλ² λλ in-memory cache λ₯Ό ꡬννκΈ° μν΄ λ§μ΄λ€ μμ보λ κ²μ΄ Redis μ Memcache μΈλ°, μ΄ λ κ°μ§λ₯Ό λΉκ΅ν΄ 보며 ꡬννκ³ μ νλ μλΉμ€μ λ μ ν©ν μΊμ μ루μ μΈμ§ μμ보μ.
Memcached λ 2003 λ μ λμ¨ κ³ μ±λ₯ μΊμ± μ루μ μ΄λ€. Redis λ λΉκ΅μ μ΅κ·Όμ λμμΌλ©° (2009λ ), μ¬λ¬ κΈ°λ₯μ νμ¬ν μΊμ± μ루μ μ΄λ€. AWS μμλ μ΄λ€μ 곡ν΅μ κ³Ό μ°¨μ΄μ μ λ€μκ³Ό κ°μ΄ μ 리νκ³ μλ€.
νλ‘ λ³΄λ λκ° Memcached κ° Redis μ λΉν΄ ν μ€ μλ κ²μ΄ μ μ΄λ³΄μ΄λλ°, μ€μ λ‘λ κ·Έλ λ€. Memcached λ λ¨μν μμ μ μν΄ κ³ μλ λ°λ©΄ Redis λ μ¬λ¬ μΌμ΄μ€κΉμ§ κ³ λ €ν μ μλλ‘ μΆκ°μ μΈ κΈ°λ₯μ΄ νμ¬λμλ€. νμ§λ§ μ΄ λμ κΈ°λ³Έμ μΈ κΈ°λ₯μ κ°λ€λ μ μ μ μνμ¬μΌ νλ€.
β¨ Memcached & Redis : 곡ν΅μ
Memcached μ Redis λ λͺ¨λ in-memory storage (database) λ‘, SSD μ κ°μ Disk λ³΄λ€ λ°μ΄ν° λ°ν μλκ° λΉ λ₯΄λ€λ μ₯μ μ΄ μλ€. λ€μ λ§νλ©΄ μλ²μ μ±λ₯μ ν₯μνλ κ²μ΄ λͺ©μ μΈ μΊμμ μ΅μ ν λμ΄ μλ€λ μλ―Έμ΄λ€. κΈ°λ³Έμ μΌλ‘λ NoSQL λ°μ΄ν°λ² μ΄μ€λ‘, key-value μμ νμ©ν΄ λ°μ΄ν°λ₯Ό μ μ₯νλ€.
β¨ Memcached & Redis : μ°¨μ΄μ
κ·Έλ λ€λ©΄ μΊμ μ νμ μμ κ³ λ €ν΄μΌ ν μ€μν μ°¨μ΄μ μ 무μμ΄ μμκΉ.
1. λ°μ΄ν° νμ
Memcached λ λ°μ΄ν°λ₯Ό λ¬Έμμ΄λ‘λ§ μ μ₯νλ λ°λ©΄, Redis λ μ‘°κΈ λ λ€μν μλ£νμ μ§μνλ€. λ°λΌμ Memcached λ₯Ό μ¬μ©ν λλ JSON.stringify λ±μ λ©μλλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ λΆ λ³ννμ¬ μ μ₯νκ³ , κ°μ Έμ¬ λλ νμ±μ ν΄μΌ νλ λ°λ©΄ Redis λ₯Ό μ¬μ©ν λλ λ°λ‘ μνλ λ°μ΄ν°λ₯Ό λ€λ£° μ μλ€.
2. λ°μ΄ν° μ§μμ±
Memcached μλ μμ§λ§ Redis μλ νΉμ§ μ€ νλλ λ°μ΄ν° μ§μμ± (Persistence) μ΄λ€. in-memory storage λ μλ λ¨κΈ°κ° μ μ₯μμ΄κΈ° λλ¬Έμ μ»΄ν¨ν°κ° κΊΌμ§κ±°λ νλ‘μΈμ€κ° μ’ λ£λλ©΄ μμ μ μ₯λμλ λ°μ΄ν°κ° μ λΆ μμ λλ€. Memcached λ μ΄λ¬ν νΉμ± λλ¬Έμ λ°μ΄ν°λ₯Ό λ λ¦¬κ² λ μνμ±μ΄ λλ€.
λ°λ©΄ Redis μλ AOF Log μ RDB Snapshot μ΄λΌλ κΈ°λ₯μ΄ μλ€. μ΄λ κ°κ° Append Only File κ³Ό Redis Database Backup File μ μ½μ΄λ‘, in-memory μ μ μ₯λ λ°μ΄ν°λ₯Ό Diskμ λ°±μ ν΄μ£Όλ κΈ°λ₯μ΄λ€. μ΄λ¬ν κΈ°λ₯λ€μ ν΅ν΄ Redis λ μλ²μ μ₯μ κ° λ°μν΄λ λ°μ΄ν° μ μ€ μμ΄ λ³΄κ΄λμλ λ°μ΄ν°λ₯Ό 볡ꡬν μ μμΌλ©°, μλ² μμ μ±μλ ν¬κ² κΈ°μ¬νλ€.
AOF Log
- μλ²μμ λ¨κΈ°λ λͺ¨λ ꡬ문 (operation) μ λ‘κ·Έλ‘ μ°μ΄μ 보κ΄ν λ€, μ¬λΆν λλ λ°μ΄ν° μ μ€ μ λ‘κ·Έλ₯Ό μ λΆ λ€μ μ€ννλ λ°©μμ΄λ€.
RDB Snapshot
- Redis μ νμ¬ μνμ λν μ€λ μ·μ μ°κ³ child νλ‘μΈμ€λ₯Ό ν΅ν΄ λμ€ν¬μ μ μ₯νλ λ°©μμ΄λ€. parent νλ‘μΈμ€λ λ°©ν΄λ₯Ό λ°μ§ μκΈ° λλ¬Έμ Redis λ λ³Έμ°μ μΊμ±μ κ³μ μνν μ μκ² λλ€.
3. λ°μ΄ν° κΈΈμ΄
Redis μ key λλ string μ 512MB μ λ¬νλ ν¬κΈ°λ₯Ό κ°μ§ μ μλ λ°λ©΄ Memcached μ key λ 250 λ°μ΄νΈμ ν¬κΈ°λ°μ κ°μ§ λͺ»νλ€. λ°λΌμ μ μ₯ν λ°μ΄ν° κ°μ΄ ν¬λ€λ©΄ Redis λ₯Ό μ΄μ©νλλ° μ΄μ μ΄ μλ€.
4. λ°μ΄ν° μμ λ°©λ²
Memcached λ Redis λ λͺ¨λ LRU (Least Recently Used) λ°©λ²μ ν΅ν΄ μμ¬ κΈ°κ°μ΄ κΈ΄ λ°μ΄ν°λ₯Ό μμ νλ€. κ·Έλ¬λ Redis λ No Eviction (λ°μ΄ν°λ₯Ό μμ νμ§ μκ³ λ©λͺ¨λ¦¬κ° μ°¨λ©΄ key μΆκ°λ₯Ό νμ©νμ§ μμ) μ΄λ TTL (Time to Live : TTL νκΈ°κ° λ λ°μ΄ν°λ₯Ό λ¨Όμ μ§μ°κ³ λλ¨Έμ§λ μμ§ μ ν¨ν κ²μΌλ‘ κ°μ£Όν¨) λ±μ μΆκ°μ μΈ λ°©λ²μ ν΅ν΄μλ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν μ μλ€.
5. λ ν리카
Redis λ μ체μ μΌλ‘ Replica λ₯Ό νμ±νμ¬ λ κ°μ λ€λ₯Έ μλ²μμλ λμΌν λ°μ΄ν°κ° 보κ΄λ μ μλλ‘ νμ§λ§, Memcached λ μΈλΆ μννΈμ¨μ΄λ₯Ό μ¬μ©νμ§ μλ μ΄μ Replica λ₯Ό μ 곡νμ§ μλλ€.
6. ν΄λ¬μ€ν°
ν΄λ¬μ€ν°λ§μ΄λ μ¬λ¬ κ°μ μΈμ€ν΄μ€λ₯Ό μμ±ν΄ νλλ‘ μ°κ²°νλ μμ μ μλ―Ένλλ°, μ΄λ₯Ό ν΅ν΄ μλΉμ€μ μ κ·Ό κ°λ₯μ±μ λμΌ μ μλ€. κ°λ Ή, μ¬λ¬ κ°μ Redis node κ° νλμ ν΄λ¬μ€ν°λ‘ μ°κ²°λ κ²½μ°, μλ² 1 μμ Redis node 2 μ μλ μ 보μ λν μμ²μ΄ λ€μ΄μ¨λ€λ©΄ Redis node 1 λ λ°λ‘ node 2 μ μ κ·Όν΄ μ 보λ₯Ό λ°νν μ μλ€.
Redis λ ν΄λ¬μ€ν°λ§μ μ§μνκΈ° λλ¬Έμ, μ΄λ₯Ό μ νμ©νλ€λ©΄ μλΉμ€μ μ±λ₯μ΄ κ°μ λλ κ²λΏλ§ μλλΌ νμ₯ κ°λ₯μ±λ λμ¬μ£Όκ² λλ€.
+ 7. Multithread
무μΈκ°κ° Multithread λ κ²μ νλμ νλ‘μΈμ€μμ μ¬λ¬ κ°μ μμ μ λμμ μνν μ μμμ μλ―Ένλλ°, μλ Memcached μ Redis μ€ Memcached λ§ Multithread λ₯Ό μ§μν΄ λ μ’μ μ±λ₯μ μ 곡νμλ€.
κ·Έλ¬λ Redis λ²μ μ΄ μ λ°μ΄νΈ λλ©° λ²μ 6λΆν°λ Redis μμλ Multithreading μ΄ μ§μλκΈ° μμνλ€.
β¨ Memcached vs Redis : 무μμ μ¬μ©ν΄μΌ νλκ°
μ λ΅μ μλ€. μλμ μΈκΈνλ― μλΉμ€λ₯Ό κ°μ₯ μ μκ³ μλ κ²μ κ·Έ μλΉμ€λ₯Ό κ°λ°ν μ¬λμ΄κΈ° λλ¬Έμ, 볡μ‘ν μΊμ± κΈ°λ₯μ΄ νμ μλ€λ©΄ λ¨μν Memcached λ₯Ό μ¬μ©νλ©΄ λ κ²μ΄κ³ , Redis μ μ΄μ μ΄ νμνλ€λ©΄ Redis λ₯Ό μ°λ©΄ λ κ²μ΄λ€.
κ·Έλ¬λ μμλ³Όμλ‘ λλΆλΆμ μ¬λμ΄ Memcached μ μ°λλ μ¬λ¬ μ€μ μ ν μ μλ Redis λ₯Ό μ ννλ κ²½ν₯μ 보μΈλ€. μ΄λ² νλ‘μ νΈμμλ λλ Redis λ₯Ό νμ©ν΄ μΊμ±μ νκ² λμλλ°, Redis μ μ΄μ μ μ΅λν λλ €λ³΄κΈΈ κΈ°λν΄λ³Έλ€.
β¨ μ°Έκ³ μλ£
'π» DEV > Database' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Database] Express/NodeJS μμ Redis μ¬μ©νκΈ° (0) | 2021.07.18 |
---|---|
[Database] μ€λ©(Sharding) μ΄λ? (0) | 2021.07.14 |
[Database] Row oriented DB, Column oriented DB λ? (0) | 2021.07.13 |
[Database] DB ν¨λ¬λ€μ (Paradigm) μ΄λ? (0) | 2021.07.08 |
[Database] κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(RDBMS) μ SQL (0) | 2021.01.05 |
λκΈ