Caching

데이터가 변경될 λ•Œ μΊμ‹œμ˜ λ¬΄νš¨ν™”

TTL (Time to Live):

  • μΊμ‹œλœ λ°μ΄ν„°λŠ” 일정 μ‹œκ°„ ν›„ μžλ™μœΌλ‘œ λ§Œλ£Œλ˜λ„λ‘ TTL 값을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 방식은 자주 λ³€κ²½λ˜μ§€ μ•ŠλŠ” λ°μ΄ν„°λ‚˜ 일정 μ‹œκ°„ λ™μ•ˆλ§Œ μœ νš¨ν•œ λ°μ΄ν„°μ˜ κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€.

μž₯점:

  • μžλ™ 만료:

    • μΊμ‹œλœ 데이터가 였래된 경우 μžλ™μœΌλ‘œ λ§Œλ£Œλ˜λ―€λ‘œ 관리가 κ°„λ‹¨ν•©λ‹ˆλ‹€.

  • λ¦¬μ†ŒμŠ€ μ ˆμ•½:

    • 였래된 λ˜λŠ” 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ€ 데이터가 λ©”λͺ¨λ¦¬μ—μ„œ μžλ™μœΌλ‘œ μ œκ±°λ˜λ―€λ‘œ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

단점:

  • 데이터 μ§€μ—°:

    • 만료된 데이터λ₯Ό λ‹€μ‹œ λ‘œλ“œν•  λ•Œ 지연이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 잠재적 λΉ„νš¨μœ¨μ„±:

    • TTL 값이 λ„ˆλ¬΄ 짧게 μ„€μ •λœ 경우, λΉˆλ²ˆν•œ 데이터 λ¦¬λ‘œλ“œκ°€ ν•„μš”ν•˜κ²Œ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

μ“°κΈ° μ‹œ λ¬΄νš¨ν™” (Write Through):

  • 데이터λ₯Ό λ³€κ²½ν•  λ•Œ ν•΄λ‹Ή 데이터λ₯Ό λ™μ‹œμ— μΊμ‹œμ™€ λ°μ΄ν„°λ² μ΄μŠ€μ— λͺ¨λ‘ μ“°λŠ” μ „λž΅μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•  수 μžˆμ§€λ§Œ, μ“°κΈ° μž‘μ—…μ˜ μ§€μ—° μ‹œκ°„μ΄ 증가할 수 μžˆμŠ΅λ‹ˆλ‹€.

μž₯점:

  • 일관성:

    • μΊμ‹œμ™€ λ°μ΄ν„°λ² μ΄μŠ€ κ°„μ˜ 데이터 일관성을 보μž₯ν•©λ‹ˆλ‹€.

  • 즉각적인 반영:

    • 변경사항이 μ¦‰μ‹œ μΊμ‹œμ™€ λ°μ΄ν„°λ² μ΄μŠ€μ— λͺ¨λ‘ λ°˜μ˜λ©λ‹ˆλ‹€.

단점:

  • μ„±λŠ₯ μ €ν•˜:

    • μΊμ‹œμ™€ λ°μ΄ν„°λ² μ΄μŠ€ λ‘˜ 닀에 데이터λ₯Ό μ“°κΈ° λ•Œλ¬Έμ— μ“°κΈ° μž‘μ—…μ˜ μ§€μ—° μ‹œκ°„μ΄ 증가할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ§€μ—° μ“°κΈ° (Write Behind):

  • λ³€κ²½λœ 데이터λ₯Ό λ¨Όμ € μΊμ‹œμ— μ“΄ ν›„, 일정 μ‹œκ°„ 뒀에 배치둜 λ°μ΄ν„°λ² μ΄μŠ€μ— μ“°λŠ” μ „λž΅μž…λ‹ˆλ‹€. 이 방식은 μ“°κΈ° μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆμ§€λ§Œ, λ°μ΄ν„°λ² μ΄μŠ€μ— μ“°κΈ° 전에 μ‹œμŠ€ν…œ μž₯μ• κ°€ λ°œμƒν•˜λ©΄ 데이터 μ†μ‹€μ˜ μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

μž₯점:

  • 높은 μ„±λŠ₯:

    • μΊμ‹œ μ“°κΈ°κ°€ μ¦‰κ°μ μœΌλ‘œ μ΄λ£¨μ–΄μ§€λ―€λ‘œ μ“°κΈ° μ„±λŠ₯이 λΉ λ¦…λ‹ˆλ‹€.

단점:

  • 데이터 손싀 μœ„ν—˜:

    • λ°μ΄ν„°λ² μ΄μŠ€μ— μ“°κΈ° 전에 μ‹œμŠ€ν…œ μž₯μ• κ°€ λ°œμƒν•˜λ©΄ 데이터 μ†μ‹€μ˜ μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • 일관성 문제:

    • λ°μ΄ν„°λ² μ΄μŠ€μ™€ μΊμ‹œ κ°„μ˜ μΌμ‹œμ μΈ λΆˆμΌμΉ˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ³€κ²½λœ λΆ€λΆ„λ§Œ μΊμ‹œ (Cache Aside):

  • 데이터 λ³€κ²½ μ‹œ μΊμ‹œμ—μ„œ ν•΄λ‹Ή 데이터λ₯Ό μ œκ±°ν•˜κ³ , 데이터가 λ‹€μ‹œ ν•„μš”ν•  λ•Œλ§Œ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‘°νšŒν•˜μ—¬ μΊμ‹œμ— μ €μž₯ν•˜λŠ” μ „λž΅μž…λ‹ˆλ‹€. 이 방식은 읽기와 μ“°κΈ° μž‘μ—…μ„ μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μž₯점:

  • μ΅œμ ν™”λœ λ¦¬μ†ŒμŠ€ μ‚¬μš©:

    • ν•„μš”ν•œ λ°μ΄ν„°λ§Œ μΊμ‹œμ— λ‘œλ“œλ©λ‹ˆλ‹€.

  • μœ μ—°μ„±:

    • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§μ—μ„œ 데이터λ₯Ό μ–Έμ œ μΊμ‹œν• μ§€ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

단점:

  • 초기 μ§€μ—°:

    • 처음 데이터λ₯Ό λ‘œλ“œν•  λ•Œ 좔가적인 지연이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • λ³΅μž‘μ„± 증가:

    • μ‘μš© ν”„λ‘œκ·Έλž¨ μ½”λ“œμ—μ„œ μΊμ‹œ 관리λ₯Ό 직접 μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λΆ„μ‚° μΊμ‹œμ˜ 일관성:

  • μ—¬λŸ¬ μ„œλ²„ λ˜λŠ” λ…Έλ“œμ—μ„œ λΆ„μ‚° μΊμ‹œλ₯Ό μ‚¬μš©ν•  경우, μΊμ‹œ κ°„μ˜ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•œ μ „λž΅μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 데이터 λ³€κ²½ μ‹œ λͺ¨λ“  λ…Έλ“œμ˜ μΊμ‹œλ₯Ό λ™μ‹œμ— λ¬΄νš¨ν™”ν•˜κ±°λ‚˜ νŠΉμ • λ…Έλ“œμ—μ„œλ§Œ μΊμ‹œλ₯Ό λ¬΄νš¨ν™”ν•˜λŠ” λ“±μ˜ μ „λž΅μ„ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μž₯점:

  • ν™•μž₯μ„±:

    • λΆ„μ‚° μΊμ‹œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ μ„œλ²„ λ˜λŠ” λ…Έλ“œμ— μΊμ‹œλ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

단점:

  • λ³΅μž‘μ„±:

    • λΆ„μ‚° μΊμ‹œ κ°„μ˜ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•œ 좔가적인 μ „λž΅κ³Ό 관리가 ν•„μš”ν•©λ‹ˆλ‹€.

  • λ„€νŠΈμ›Œν¬ μ˜€λ²„ν—€λ“œ:

    • λ‹€λ₯Έ λ…Έλ“œμ™€μ˜ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•œ λ„€νŠΈμ›Œν¬ ν†΅μ‹ μœΌλ‘œ μΈν•œ 좔가적인 지연이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@CachePut VS @CacheEvict

@CachePut

μž₯점:

  • μžλ™ μ—…λ°μ΄νŠΈ:

    • @CachePut은 λ©”μ„œλ“œ 호좜의 κ²°κ³Όλ₯Ό μΊμ‹œμ— μžλ™μœΌλ‘œ μ €μž₯ν•˜λ―€λ‘œ, μΊμ‹œμ˜ 데이터가 항상 μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€.

  • 데이터 일관성:

    • 데이터λ₯Ό λ³€κ²½ν•˜λŠ” μž‘μ—… 후에 μžλ™μœΌλ‘œ μΊμ‹œλ₯Ό μ—…λ°μ΄νŠΈν•˜κΈ° λ•Œλ¬Έμ— λ°μ΄ν„°λ² μ΄μŠ€μ™€ μΊμ‹œ κ°„μ˜ 일관성을 μœ μ§€ν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€.

단점:

  • μ„±λŠ₯ μ €ν•˜:

    • λ°μ΄ν„°λ² μ΄μŠ€μ™€ μΊμ‹œ λ‘˜ 닀에 데이터λ₯Ό μ“°κΈ° λ•Œλ¬Έμ—, μ“°κΈ° μž‘μ—…μ˜ μ§€μ—° μ‹œκ°„μ΄ 증가할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λΆˆν•„μš”ν•œ μΊμ‹œ μ—…λ°μ΄νŠΈ:

    • λͺ¨λ“  μ—…λ°μ΄νŠΈ μž‘μ—…μ— λŒ€ν•΄ μΊμ‹œλ₯Ό κ°±μ‹ ν•˜λ―€λ‘œ, ꡳ이 μΊμ‹œμ— μ €μž₯ν•  ν•„μš”κ°€ μ—†λŠ” λ°μ΄ν„°κΉŒμ§€λ„ μ—…λ°μ΄νŠΈ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

@CacheEvict

μž₯점:

  • κ°„λ‹¨ν•œ μΊμ‹œ 관리:

    • μΊμ‹œμ—μ„œ 데이터λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ œκ±°ν•˜μ—¬, λ°μ΄ν„°μ˜ λ³€κ²½ λ˜λŠ” μ‚­μ œ μ‹œ 일관성 문제λ₯Ό ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • ν”Œλ ‰μ‹œλΈ”:

    • νŠΉμ • 쑰건에 따라 μΊμ‹œλ₯Ό μ œκ±°ν•  수 있으며, μ—¬λŸ¬ μΊμ‹œλ‚˜ 전체 μΊμ‹œλ₯Ό ν•œ λ²ˆμ— μ œκ±°ν•˜λŠ” 것도 κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • λ¦¬μ†ŒμŠ€ μ ˆμ•½:

    • 항상 μ΅œμ‹  λ°μ΄ν„°λ§Œ μΊμ‹œμ— μœ μ§€ν•˜λ©΄μ„œ μΊμ‹œ 크기λ₯Ό μ΅œμ†Œν™”ν•˜μ—¬, λ¦¬μ†ŒμŠ€λ₯Ό μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

단점:

  • λΉˆλ²ˆν•œ λ°μ΄ν„°λ² μ΄μŠ€ 쑰회:

    • μΊμ‹œμ—μ„œ 데이터λ₯Ό μ œκ±°ν•œ ν›„ ν•΄λ‹Ή 데이터가 λ‹€μ‹œ ν•„μš”ν•˜λ©΄ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ‹€μ‹œ μ‘°νšŒν•΄μ•Ό ν•˜λ―€λ‘œ, 이둜 μΈν•œ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μΌμ‹œμ μΈ 데이터 뢈일치:

    • 데이터λ₯Ό μ—…λ°μ΄νŠΈ ν•œ ν›„ μΊμ‹œμ—μ„œ ν•΄λ‹Ή 데이터λ₯Ό μ œκ±°ν•˜λ©΄, λ‹€μŒ 데이터 μš”μ²­ μ‹œκΉŒμ§€λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ™€ μΊμ‹œ κ°„μ˜ μΌμ‹œμ μΈ 데이터 λΆˆμΌμΉ˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€

Last updated

Was this helpful?