🧠 Sieve μΊμ‹œμ™€ Redis, ν•¨κ»˜ ν™œμš©ν•  수 μžˆμ„κΉŒ?

sangjinsuΒ·2025λ…„ 5μ›” 3일

캐싱 μ „λž΅μ„ κ³ λ―Όν•˜λ‹€ 보면 λ‹¨μˆœνžˆ μ–΄λ–»κ²Œ μ €μž₯ν•  것인가λ₯Ό λ„˜μ–΄μ„œ,

무엇을 μ €μž₯ν•  것인가에 λŒ€ν•œ μ§ˆλ¬Έμ— λ„λ‹¬ν•˜κ²Œ λ©λ‹ˆλ‹€.

이런 κ΄€μ μ—μ„œ Sieve μΊμ‹œλŠ” λ‹¨μˆœν•œ μΊμ‹œκ°€ μ•„λ‹ˆλΌ "캐싱할 데이터 자체λ₯Ό 선별"ν•˜λŠ” μ „λž΅μ  κ΅¬μ‘°μž…λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄, 이 Sieve μΊμ‹œ λ‘œμ§μ„ Redis와 ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 이점이 μžˆμ„κΉŒμš”?

이번 κΈ€μ—μ„œλŠ” κ·Έ κ°€λŠ₯μ„±κ³Ό ꡬ쑰λ₯Ό μ‹€λ¬΄μ μœΌλ‘œ μ •λ¦¬ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.


πŸ§ͺ Sieve μΊμ‹œ μš”μ•½

Sieve μΊμ‹œλŠ” λ‹¨μˆœν•œ ν‚€-κ°’ μ €μž₯μ†Œκ°€ μ•„λ‹ˆλΌ μΊμ‹œ μ €μž₯ μ—¬λΆ€λ₯Ό μ„ λ³„ν•˜λŠ” 둜직이 ν¬ν•¨λœ κ΅¬μ‘°μž…λ‹ˆλ‹€.

보톡 λ‹€μŒκ³Ό 같은 쑰건으둜 λ™μž‘ν•©λ‹ˆλ‹€:

  • μ €μž₯ μ „, filter(key, value) 쑰건을 ν†΅κ³Όν•œ 경우만 μΊμ‹œμ— μ €μž₯
  • TTL(Time-To-Live)을 기반으둜 μžλ™ 만료
  • 자주 μ ‘κ·Όλ˜κ±°λ‚˜, μ€‘μš”λ„κ°€ 높은 κ°’λ§Œ μ„ νƒμ μœΌλ‘œ 캐싱

βœ… λΆˆν•„μš”ν•œ λ°μ΄ν„°λŠ” μ²˜μŒλΆ€ν„° μ €μž₯ν•˜μ§€ μ•ŠμŒ β†’ μΊμ‹œ λ‚­λΉ„ μ΅œμ†Œν™”


πŸš€ Redisμ™€μ˜ ꢁ합은?

RedisλŠ” in-memory 기반의 고속 ν‚€-κ°’ μ €μž₯μ†Œλ‘œ, TTL 관리와 μΊμ‹œ κ³΅μœ μ— 강점을 κ°–κ³  μžˆμŠ΅λ‹ˆλ‹€.

ν•­λͺ©Redisκ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯
TTL 만료EXPIRE, SETEX, TTL λ“±μœΌλ‘œ 데이터 수λͺ… μžλ™ 관리
λΆ„μ‚° μΊμ‹œμ—¬λŸ¬ μΈμŠ€ν„΄μŠ€ κ°„ 곡유 κ°€λŠ₯ν•œ 쀑앙 μΊμ‹œ
λΉ λ₯Έ 쑰회RAM 기반 μ €μž₯으둜 μ΄ˆκ³ μ† 데이터 μ ‘κ·Ό

즉, RedisλŠ” Sieve μΊμ‹œμ˜ μ €μž₯μ†Œ 역할을 맑기에 μ•„μ£Ό μ ν•©ν•©λ‹ˆλ‹€.


πŸ”§ ꡬ쑰 섀계 μ˜ˆμ‹œ

1️⃣ κΈ°λ³Έ ꡬ쑰: ν•„ν„°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ, μ €μž₯은 Redis에

[μš”μ²­]
  └─→ Sieve ν•„ν„°(key, value)
           β”œβ”€ 쑰건 톡과 β†’ Redis.set(key, value, TTL)
           └─ 쑰건 μ‹€νŒ¨ β†’ μ €μž₯ν•˜μ§€ μ•ŠμŒ
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ ˆμ΄μ–΄μ—μ„œ 쑰건 필터링 μˆ˜ν–‰
  • RedisλŠ” TTL 만료만 λ‹΄λ‹Ή
  • Sieve 둜직과 Redis의 μž₯점을 μ‘°ν•©

2️⃣ ν™•μž₯ ꡬ쑰: 닀단계 μΊμ‹œ ꡬ성

[μš”μ²­]
 └─→ 1μ°¨: λ©”λͺ¨λ¦¬ μΊμ‹œ(Map) 쑰회
         β”œβ”€ 적쀑 β†’ λ°”λ‘œ λ°˜ν™˜
         └─ μ‹€νŒ¨ β†’ Redis 쑰회
                 β”œβ”€ 적쀑 β†’ λ©”λͺ¨λ¦¬ μΊμ‹œ μ—…λ°μ΄νŠΈ
                 └─ μ‹€νŒ¨ β†’ DB 쑰회 + ν•„ν„° β†’ Redis + λ©”λͺ¨λ¦¬ μ €μž₯
  • 1μ°¨ μΊμ‹œ: μ΄ˆκ³ μ† 응닡 (goroutine-safe Map, LRU λ“±)
  • 2μ°¨ μΊμ‹œ (Redis): TTL 관리 + 곡유
  • DBκΉŒμ§€ κ°€λŠ” λΉ„μš© μ΅œμ†Œν™” + μ„ λ³„λœ κ°’λ§Œ 캐싱

🧠 μ–΄λ–€ 상황에 μ ν•©ν• κΉŒ?

상황Sieve + Redis λ„μž… 효과
데이터 양이 많고 λŒ€λΆ€λΆ„μ€ μž¬μ‚¬μš©λ˜μ§€ μ•ŠμŒμΊμ‹œ λΆ€ν•˜ κ°μ†Œ
μ€‘μš”ν•œ ν•­λͺ©λ§Œ μΊμ‹±ν•˜κ³  μ‹ΆμŒμ»€μŠ€ν…€ ν•„ν„°λ‘œ μ œμ–΄
닀쀑 μΈμŠ€ν„΄μŠ€/λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ꡬ쑰Redis둜 곡유 μΊμ‹œ ꡬ성
TTL 만료 관리가 ν•„μš”ν•¨Redisκ°€ μžλ™ 처리

πŸ“ 정리

  • Sieve μΊμ‹œλŠ” 캐싱 λŒ€μƒ 선별 둜직이 핡심이며, RedisλŠ” 고속 μ €μž₯μ†Œ μ—­ν• λ‘œ 이상적
  • ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬ νš¨μœ¨μ„±κ³Ό μ‹œμŠ€ν…œ 응닡성을 λͺ¨λ‘ μž‘μ„ 수 있음
  • 특히 κ΄‘κ³  μ‹œμŠ€ν…œ, μΆ”μ²œ μ‹œμŠ€ν…œ, μ§€μ—­ 기반 μ½˜ν…μΈ  캐싱 λ“±μ—μ„œ 효과적
profile
κ°œλ°œμ— 집쀑할 수 μžˆλŠ”, 이슈λ₯Ό μ€„μ΄λŠ” ν™˜κ²½μ„ λ§Œλ“€κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€