ETC.

[Server] Redis μ„œλ²„λž€?

carsumin 2025. 3. 29. 12:15
Redis μ„œλ²„λž€?
  • RedisλŠ” ν•˜λ‚˜μ˜ 독립적인 μ„œλ²„ ν”„λ‘œκ·Έλž¨
  • Redis μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λ©΄ ν•˜λ‚˜μ˜ Redis μ„œλ²„ μΈμŠ€ν„΄μŠ€κ°€ λ©”λͺ¨λ¦¬ μœ„μ—μ„œ 싀행됨
  • 6379번 포트λ₯Ό 기본으둜 μ—΄κ³  ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ°›μŒ

* μ˜ˆμ‹œ

[Spring Boot]  ←→  [Redis μ„œλ²„]  ←→  [λ©”λͺ¨λ¦¬ λ‚΄λΆ€ λ°μ΄ν„°]

 

  • Spring BootλŠ” ν΄λΌμ΄μ–ΈνŠΈ μ—­ν• 
  • Redis μ„œλ²„λŠ” 데이터 μ €μž₯μ†Œ μ—­ν• 
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” Redis μ„œλ²„μ— μ—°κ²°ν•΄μ„œ 데이터λ₯Ό set, get, del 같은 λͺ…λ ΉμœΌλ‘œ μ‘°μž‘

 

Redis μ„œλ²„κ°€ λ”°λ‘œ μžˆλŠ” 경우?
  • 개발용(local) : λ‚΄ PCμ—μ„œ redis-serverλ₯Ό μ‹€ν–‰ν•΄ μ‚¬μš©
  • 운영용(production) : AWS EC2, Azure, GCP, 사내 VM λ“± λ³„λ„μ˜ μ„œλ²„μ— Redisκ°€ μ„€μΉ˜λ˜μ–΄ 있음

--> μ—¬λŸ¬ μ›Ήμ„œλ²„κ°€ 같은 Redis μ„œλ²„λ₯Ό κ³΅μœ ν•΄μ•Ό ν•˜λ―€λ‘œ Redisλ₯Ό 쀑앙에 λ‘ 

 

즉 Redis μ„œλ²„κ°€ λ”°λ‘œ μžˆλ‹€λŠ” 것은 μ™ΈλΆ€ λ³„λ„μ˜ μ„œλ²„μ— λ„μ›Œλ†“μ€ 것

 

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      μ‚¬μš©μž λΈŒλΌμš°μ €       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Spring Boot μ„œλ²„ A    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Spring Boot μ„œλ²„ B    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
     (곡톡 μΊμ‹œ μ €μž₯μ†Œ)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       Redis μ„œλ²„        β”‚  ←  데이터 λ©”λͺ¨λ¦¬μ— μ €μž₯
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 

-> μ΄λ ‡κ²Œ ν•˜λ©΄ Aμ„œλ²„, Bμ„œλ²„κ°€ 같은 Redis 데이터λ₯Ό κ³΅μœ ν•  수 있음 (둜그인 μ„Έμ…˜, μΊμ‹œλœ μ‚¬μš©μž 정보 λ“±)

 

 

Redis의 ν•„μš”μ„±
  • 속도와 효율 증가
  • DBκ°€ λŠλ¦¬κ±°λ‚˜ λΆ€ν•˜κ°€ λ§Žμ„ λ•Œ Redisλ₯Ό ν•¨κ»˜ μ‚¬μš©
  • 데이터λ₯Ό 영ꡬ히 μ €μž₯ν•˜λŠ” λͺ©μ μ΄ μ•„λ‹ˆλΌ λΉ λ₯Έ 접근을 μœ„ν•΄ μž μ‹œ λ³΄κ΄€ν•˜λŠ” μš©λ„μ— 더 κ°€κΉŒμ›€

 

Redisκ°€ μ‹€μ œλ‘œ μ“°μ΄λŠ” 상황
  1. 둜그인 μ„Έμ…˜ μ €μž₯μ†Œ
    • μ‚¬μš©μž 둜그인 μ„Έμ…˜μ •λ³΄λ₯Ό DB에 μ €μž₯ν•˜λ©΄ 느림
    • Redis에 μ €μž₯ν•˜λ©΄ λΉ λ₯΄κ³  TTL(μœ νš¨μ‹œκ°„)을 μ„€μ •ν•΄μ„œ μžλ™ λ§Œλ£Œλ„ κ°€λŠ₯함
  2. μΊμ‹œ (Cache)
    • 자주 ν˜ΈμΆœλ˜λŠ” DB 데이터λ₯Ό Redis에 μ €μž₯ν•΄μ„œ DB λΆ€ν•˜λ₯Ό κ°μ†Œμ‹œν‚΄
    • 예 : μƒν’ˆλͺ©λ‘, 곡지사항, μœ μ €μ •λ³΄ λ“±
  3. μ‹€μ‹œκ°„ λž­ν‚Ή/μΉ΄μš΄νŒ…
    • μ •λ ¬λœ μ§‘ν•©(ZSet)을 μ΄μš©ν•΄μ„œ μ‹€μ‹œκ°„ μˆœμœ„ν‘œ κ΅¬ν˜„
  4. λΆ„μ‚° 락 (λ™μ‹œ μž‘μ—… μ œμ–΄)
    • μ—¬λŸ¬ μ„œλ²„μ—μ„œ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” μ£Όλ¬Έ/결제/적립금 둜직 μ œμ–΄

 

정리
ν•­λͺ© μ„€λͺ…
Redis μ„œλ²„ 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜λŠ” 별도 μ„œλ²„ ν”„λ‘œμ„ΈμŠ€
μ—­ν•  μΊμ‹œ, μ„Έμ…˜, 큐, λž­ν‚Ή λ“± λΉ λ₯Έ 데이터 처리 λ‹΄λ‹Ή
μ„œλ²„ 뢄리 이유 μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„κ°€ κ³΅ν†΅μœΌλ‘œ λΉ λ₯Έ μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•¨
ν•„μš”ν•œ 이유 DB λΆ€ν•˜λ₯Ό 쀄이고 μ΄ˆκ³ μ† 응닡이 ν•„μš”ν•œ 데이터 μ²˜λ¦¬μ— 적합