Home
>
CS
>
2024
>
πΎ [CS] Cache(μΊμ)λ 무μμΌκΉμ?
CS
πΎ [CS] Cache(μΊμ)λ 무μμΌκΉμ?
π Intro.
- βοΈ μΊμ(Cache)λ μμ£Ό μ¬μ©λκ±°λ μ κ·Ό μλκ° μ€μν λ°μ΄ν°λ₯Ό μμλ‘ μ μ₯νμ¬ λ λΉ λ₯΄κ² μ κ·Όν μ μλλ‘ νλ λ©λͺ¨λ¦¬ κ³΅κ° λλ μ μ₯μ.
1οΈβ£ Cache(μΊμ)μ λͺ©μ .
-
1οΈβ£ μ±λ₯ ν₯μ
- βοΈ μμ£Ό μ¬μ©λλ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ κ·Όν μ μλλ‘ μ μ₯.
-
2οΈβ£ μ§μ° μκ° κ°μ(Latency Reduction)
- βοΈ λ°μ΄ν°λ² μ΄μ€λ μ격 μλ²μμ λ°λ³΅μ μΈ μμ²μ μ€μ¬ μλ΅ μλ κ°μ .
-
3οΈβ£ μμ€ν
λΆν κ°μ
- βοΈ λμΌν μμ²μ λν λ°λ³΅μ μΈ μ²λ¦¬ λΆνλ₯Ό μ€μ.
-
4οΈβ£ λ€νΈμν¬ νΈλν½ μ κ°
- βοΈ λ€νΈμν¬λ₯Ό ν΅ν λ°λ³΅ μμ²μ μ€μ¬ νΈλν½ μ κ°.
2οΈβ£ Cache(μΊμ)μ μλ μ리.
-
1οΈβ£ μΊμ λ―Έμ€(Cache Miss)
- βοΈ νμν λ°μ΄ν°κ° μΊμμ μ‘΄μ¬νμ§ μμ λ λ°μ.
- βοΈ λ°μ΄ν° μμ€(μ: λ°μ΄ν°λ² μ΄μ€)μμ λ°μ΄ν°λ₯Ό κ°μ Έμ μΊμμ μ μ₯.
-
2οΈβ£ μΊμ ννΈ(Cache Hit)
- βοΈ νμν λ°μ΄ν°κ° μΊμμ μ‘΄μ¬ν λ λ°μ.
- βοΈ λ°μ΄ν°λ₯Ό μμ€ λμ μΊμ€μμ κ°μ Έμ΄.
-
3οΈβ£ μΊμ λ§λ£(Cache Expiration)
- βοΈ μΊμμ μ μ₯λ λ°μ΄ν°κ° μ€μ λ μκ°(TTL: Time To Live)μ΄ μ§λλ©΄ λ§λ£.
- βοΈ μλ‘μ΄ λ°μ΄ν°λ‘ κ΅μ²΄λκ±°λ μμ λ¨.
3οΈβ£ μΊμμ μ ν.
-
1οΈβ£ λ©λͺ¨λ¦¬ μΊμ (In-Memory Cache)
- βοΈ μ€λͺ
: RAM(Random Access Memory)μ λ°μ΄ν°λ₯Ό μ μ₯.
- βοΈ μμ : Redis, Memcached
-
2οΈβ£ λΈλΌμ°μ μΊμ (Browser Cache)
- βοΈ μ€λͺ
: μΉ λΈλΌμ°μ κ° μΉ νμ΄μ§μ μμ(μ΄λ―Έμ§, CSS, JavaScript λ±)μ μ μ₯.
- βοΈ μμ : ν¬λ‘¬, νμ΄μ΄νμ€μ μΊμ.
-
3οΈβ£ λμ€ν¬ μΊμ (Disk Cache)
- βοΈ μ€λͺ
: λμ€ν¬μ μΌλΆλ₯Ό μΊμλ‘ μ¬μ©.
- βοΈ μμ : μ΄μ체μ μ νμΌ μμ€ν
μΊμ.
-
4οΈβ£ λ°μ΄ν°λ² μ΄μ€ μΊμ (Database Cache)
- βοΈ μ€λͺ
: μμ£Ό μ‘°νλλ 쿼리 κ²°κ³Όλ₯Ό μΊμμ μ μ₯.
- βοΈ μμ : MySQL Query Cache
-
5οΈβ£ μ½ν
μΈ μ μ‘ λ€νΈμν¬ (CDN Cache)
- βοΈ μ€λͺ
: CDN μλ²κ° μ μ μ½ν
μΈ λ₯Ό μΊμνμ¬ μ¬μ©μμκ² μ 곡.
- βοΈ μμ : Cloudflare, AWS CloudFront
4οΈβ£ μΊμ 무ν¨ν(Cache Invalidation).
π μΊμλ₯Ό μ΅μ μνλ‘ μ μ§νκΈ° μν λ°©λ²:
-
1οΈβ£ μκ° κΈ°λ° λ¬΄ν¨ν (Time-to-Live, TTL)
- βοΈ μΊμ λ°μ΄ν°κ° μΌμ μκ°μ΄ μ§λλ©΄ μλμΌλ‘ λ§λ£.
-
2οΈβ£ μλ 무ν¨ν (Manual Invalidation)
- βοΈ κ΄λ¦¬μκ° νΉμ μΊμ λ°μ΄ν°λ₯Ό μλμΌλ‘ 무ν¨ν.
-
3οΈβ£ Write-Through μΊμ±
- βοΈ λ°μ΄ν°κ° μΊμμ μ μ₯λλ©΄μ λμμ μλ³Έ λ°μ΄ν°λ² μ΄μ€μλ μ μ₯.
-
4οΈβ£ Write-Back μΊμ±
- βοΈ λ°μ΄ν°κ° μΊμμ λ¨Όμ μ μ₯λκ³ , λμ€μ μλ³Έ λ°μ΄ν°λ² μ΄μ€μ μ μ₯.
5οΈβ£ μΊμ μκ³ λ¦¬μ¦(Cache Algorithm).
-
1οΈβ£ LRU (Least Recently Used)
- κ°μ₯ μ€λ μ¬μ©λμ§ μμ λ°μ΄ν°λ₯Ό λ¨Όμ μμ .
-
2οΈβ£ LFU (Least Frequently Used)
- κ°μ₯ μ κ² μ¬μ©λ λ°μ΄ν°λ₯Ό λ¨Όμ μμ .
-
3οΈβ£ FIFO (First In First Out)
- λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°λ₯Ό λ¨Όμ μμ .
-
4οΈβ£ Random Replacement
- μμμ λ°μ΄ν°λ₯Ό μ ννμ¬ μμ .
6οΈβ£ μΊμμ μ₯μ κ³Ό λ¨μ .
π― μ₯μ .
- βοΈ λ°μ΄ν° μ κ·Ό μλ ν₯μ.
- βοΈ μμ€ν
λΆν κ°μ.
- βοΈ λ€νΈμν¬ νΈλν½ μ κ°.
π― λ¨μ .
- βοΈ μΊμ μΌκ΄μ± λ¬Έμ (Cache Consistency)
- βοΈ μΊμ μ€μΌ(Cache Pollution)
- βοΈ λ©λͺ¨λ¦¬ λ° μ μ₯ κ³΅κ° μΆκ° νμ,
7οΈβ£ μΊμ μ¬μ© μ¬λ‘.
-
1οΈβ£ μΉ μ ν리μΌμ΄μ
.
- βοΈ μ μ 리μμ€(μ΄λ―Έμ§, CSS, JavaScript)λ₯Ό μΊμνμ¬ λΉ λ₯Έ λ‘λ©.
-
2οΈβ£ λ°μ΄ν°λ² μ΄μ€.
- βοΈ μμ£Ό μ€νλλ 쿼리 κ²°κ³Όλ₯Ό μΊμ.
-
3οΈβ£ API μμ².
- βοΈ λ°λ³΅λλ API μμ² κ²°κ³Όλ₯Ό μΊμ.
-
4οΈβ£ λΈλΌμ°μ μΊμ.
- βοΈ μμ£Ό λ°©λ¬Ένλ μΉ νμ΄μ§ 리μμ€λ₯Ό μΊμ.
-
5οΈβ£ CDN(Content Delivery Network)
- βοΈ μ μ μ½ν
μΈ λ₯Ό μ¬μ©μμ κ°κΉμ΄ CDN μλ²μ μΊμ.
8οΈβ£ μΊμμ κ΄λ ¨λ μ©μ΄.
-
1οΈβ£ μΊμ ννΈ(Cache Hit) : μΊμμμ λ°μ΄ν°λ₯Ό μ±κ³΅μ μΌλ‘ κ°μ Έμ΄.
-
2οΈβ£ μΊμ λ―Έμ€(Cache Miss) : μΊμμ λ°μ΄ν°κ° μμ΄μ μλ³Έμμ κ°μ Έμ΄.
-
3οΈβ£ TTL(Time to Live) : μΊμ λ°μ΄ν°μ μ ν¨ κΈ°κ°.
-
4οΈβ£ Eviction(μ κ±°) : μ€λλ μΊμ λ°μ΄ν°λ₯Ό μ κ±°.
9οΈβ£ μΊμ μ λ΅ μ ν κΈ°μ€.
-
1οΈβ£ λ°μ΄ν° μ κ·Ό ν¨ν΄ : μμ£Ό μ¬μ©λλ λ°μ΄ν°μΈμ§.
-
2οΈβ£ μΌκ΄μ± μꡬμ¬ν : λ°μ΄ν° μΌκ΄μ±μ΄ μ€μνμ§.
-
3οΈβ£ μ€ν λ¦¬μ§ λΉμ© : λ©λͺ¨λ¦¬ λλ λμ€ν¬ λΉμ© κ³ λ €.
-
4οΈβ£ TTL(Time to Live) μ€μ : μΊμ λ§λ£ μκ°.
π κ²°λ‘ .
- βοΈ μΊμ(Cache)λ μμ€ν
μ±λ₯κ³Ό μλ΅ μλλ₯Ό ν¬κ² ν₯μμν¬ μ μλ μ€μν κΈ°μ μ
λλ€.
- βοΈ μ μ ν μΊμ± μ λ΅κ³Ό μκ³ λ¦¬μ¦μ μ¬μ©νλ©΄ μμ€ν
μ λΆνλ₯Ό μ€μ΄κ³ μ¬μ©μ κ²½νμ κ°μ ν μ μμ΅λλ€.
- βοΈ κ·Έλ¬λ μΊμ μΌκ΄μ± λ¬Έμ μ μ€λ²ν€λ λ±μ κ³ λ €νμ¬ μ€κ³ν΄μΌ ν©λλ€.
- π ν΅μ¬: βμμ£Ό μ¬μ©λλ λ°μ΄ν°λ₯Ό λ λΉ λ₯Έ μ μ₯μμ μμλ‘ μ μ₯ν΄λμ΄ μ±λ₯μ μ΅μ ννλ€.β