Database

[Database] λ ˆλ””μŠ€(Redis)

quedevel 2023. 3. 26. 15:52
728x90
λ°˜μ‘ν˜•

🎯 λ ˆλ””μŠ€(Redis)


λ ˆλ””μŠ€(Redis)λŠ” λ©”λͺ¨λ¦¬ 기반의 Key-Value ν˜•νƒœμ˜ 데이터 μ €μž₯μ†Œμž…λ‹ˆλ‹€. λ ˆλ””μŠ€λŠ” μ˜€ν”ˆμ†ŒμŠ€λ‘œ κ°œλ°œλ˜μ—ˆμœΌλ©°, μ„±λŠ₯이 λ›°μ–΄λ‚˜κ³  λ‹€μ–‘ν•œ μ–Έμ–΄λ‘œ κ΅¬ν˜„λœ ν΄λΌμ΄μ–ΈνŠΈ 라이브러리λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

λ ˆλ””μŠ€λŠ” λ””μŠ€ν¬μ— μ €μž₯ν•˜μ§€ μ•Šκ³  λ©”λͺ¨λ¦¬μ— 데이터λ₯Ό μ €μž₯ν•˜λ―€λ‘œ, 일반적인 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ³΄λ‹€ λΉ λ₯΄κ²Œ 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ ˆλ””μŠ€λŠ” Key-Value ν˜•νƒœλ‘œ 데이터λ₯Ό μ €μž₯ν•˜λ―€λ‘œ, μΊμ‹œλ‚˜ μ„Έμ…˜ 데이터, λ©”μ‹œμ§€ 브둜컀 λ“± λ‹€μ–‘ν•œ μš©λ„λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.


λ ˆλ””μŠ€(Redis)의 μ£Όμš” κΈ°λŠ₯


  1. λ¬Έμžμ—΄(String) λ°μ΄ν„°ν˜•μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  2. ν•΄μ‹œ(Hash) λ°μ΄ν„°ν˜•μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  3. 리슀트(List) λ°μ΄ν„°ν˜•μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  4. μ…‹(Set) λ°μ΄ν„°ν˜•μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  5. μ •λ ¬λœ μ…‹(Sorted Set) λ°μ΄ν„°ν˜•μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  6. Pub/Sub(λ°œν–‰/ꡬ독) κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  7. Lua 슀크립트λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  8. νŠΈλžœμž­μ…˜(Transaction)을 μ§€μ›ν•©λ‹ˆλ‹€.

λ ˆλ””μŠ€(Redis)의 νŠΉμ§•


  1. 높은 μ„±λŠ₯
    • λ©”λͺ¨λ¦¬ 기반의 데이터 μ €μž₯ λ°©μ‹μœΌλ‘œ 인해, λΉ λ₯Έ 응닡 속도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  2. λ°μ΄ν„°μ˜ 지속성
    • λ””μŠ€ν¬μ— 데이터λ₯Ό μ €μž₯ν•˜κ³ , λ°±μ—… 및 볡ꡬλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
  3. ν™•μž₯μ„±
    • λΆ„μ‚° ν΄λŸ¬μŠ€ν„°λ§μ„ μ§€μ›ν•˜μ—¬ λŒ€μš©λŸ‰ 데이터 μ²˜λ¦¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  4. λ‹€μ–‘ν•œ ν΄λΌμ΄μ–ΈνŠΈ 라이브러리
    • λ‹€μ–‘ν•œ μ–Έμ–΄λ‘œ κ΅¬ν˜„λœ ν΄λΌμ΄μ–ΈνŠΈ 라이브러리λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

λ ˆλ””μŠ€(Redis)κ°€ μ‚¬μš©λ˜λŠ” λΆ„μ•Ό


  1. 캐싱(Caching)
    • 캐싱은 자주 μ‚¬μš©λ˜λŠ” 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜μ—¬ λΉ λ₯Έ 응닡 속도λ₯Ό μ œκ³΅ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. λ ˆλ””μŠ€λŠ” λΉ λ₯Έ 응닡 속도와 λ©”λͺ¨λ¦¬ 기반의 데이터 μ €μž₯ λ°©μ‹μœΌλ‘œ 인해 캐싱에 많이 μ‚¬μš©λ©λ‹ˆλ‹€.
  2. μ„Έμ…˜ μŠ€ν† μ–΄(Session Store)
    • μ„Έμ…˜ μŠ€ν† μ–΄λŠ” μ„Έμ…˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μž…λ‹ˆλ‹€. μ„Έμ…˜ λ°μ΄ν„°λŠ” 보톡 μ‚¬μš©μž 인증 정보 λ“± μ€‘μš”ν•œ 정보λ₯Ό λ‹΄κ³  μžˆμœΌλ―€λ‘œ, λ ˆλ””μŠ€μ˜ λΉ λ₯Έ 응닡 속도와 μ•ˆμ •μ„±μœΌλ‘œ 인해 μ„Έμ…˜ μŠ€ν† μ–΄μ— 많이 μ‚¬μš©λ©λ‹ˆλ‹€.
  3. λ©”μ‹œμ§€ 브둜컀(Message Broker)
    • λ©”μ‹œμ§€ λΈŒλ‘œμ»€λŠ” λ©”μ‹œμ§€λ₯Ό λ°œν–‰ν•˜κ³ , ν•΄λ‹Ή λ©”μ‹œμ§€λ₯Ό κ΅¬λ…ν•˜λŠ” μ‹œμŠ€ν…œμ„ μ—°κ²°ν•˜λŠ” λΈŒλ‘œμ»€μž…λ‹ˆλ‹€. λ ˆλ””μŠ€λŠ” Pub/Sub(λ°œν–‰/ꡬ독) κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ λ©”μ‹œμ§€ λΈŒλ‘œμ»€μ— 많이 μ‚¬μš©λ©λ‹ˆλ‹€.
  4. μ‹€μ‹œκ°„ μ±„νŒ…(Real-time Chat)
    • μ‹€μ‹œκ°„ μ±„νŒ…μ€ λ ˆλ””μŠ€μ˜ Pub/Sub κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Pub/Sub κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ λ©”μ‹œμ§€λ₯Ό λΉ λ₯΄κ²Œ 전달할 수 μžˆμ–΄, μ‹€μ‹œκ°„ μ±„νŒ…μ— μ ν•©ν•©λ‹ˆλ‹€.

λ ˆλ””μŠ€(Redis)의 μž₯단점


⭐️ λ ˆλ””μŠ€(Redis)의 μž₯점

  1. λΉ λ₯Έ 응닡 속도
    • λ ˆλ””μŠ€λŠ” λ©”λͺ¨λ¦¬ 기반의 데이터 μ €μž₯ 방식을 μ‚¬μš©ν•˜λ―€λ‘œ, λ””μŠ€ν¬ 기반의 λ°μ΄ν„°λ² μ΄μŠ€μ— λΉ„ν•΄ λΉ λ₯Έ 응닡 속도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  2. ν™•μž₯μ„±
    • λ ˆλ””μŠ€λŠ” ν΄λŸ¬μŠ€ν„°λ§κ³Ό 샀딩을 μ§€μ›ν•˜μ—¬ λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ μ²˜λ¦¬μ— μ ν•©ν•©λ‹ˆλ‹€.
  3. λ‹€μ–‘ν•œ 데이터 νƒ€μž… 지원
    • λ ˆλ””μŠ€λŠ” λ¬Έμžμ—΄, ν•΄μ‹œ, 리슀트, 집합, μ •λ ¬λœ 집합 λ“± λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  4. Pub/Sub(λ°œν–‰/ꡬ독) κΈ°λŠ₯ 제곡
    • λ ˆλ””μŠ€λŠ” λ©”μ‹œμ§€ 브둜컀둜 μ‚¬μš©ν•  수 있으며, Pub/Sub κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ λ©”μ‹œμ§€λ₯Ό λΉ λ₯΄κ²Œ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.
  5. μœ μ—°ν•œ ꡬ성
    • λ ˆλ””μŠ€λŠ” λ‹€μ–‘ν•œ μš©λ„λ‘œ μ‚¬μš©λ  수 μžˆλ„λ‘ μœ μ—°ν•œ ꡬ성을 μ§€μ›ν•©λ‹ˆλ‹€.

πŸ’€οΈ λ ˆλ””μŠ€(Redis)의 단점

  1. 데이터 μ˜μ†μ„± λΆ€μ‘±
    • λ ˆλ””μŠ€λŠ” λ©”λͺ¨λ¦¬ 기반의 데이터 μ €μž₯ 방식을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, μ‹œμŠ€ν…œ μž₯μ•  λ“±μ˜ μƒν™©μ—μ„œ 데이터가 영ꡬ적으둜 손싀될 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, RDB(μŠ€λƒ…μƒ· 방식) 및 AOF(둜그 방식) λ“±μ˜ μ˜μ†μ„± 방법을 μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  2. λ‹¨μˆœν•œ 쿼리 지원
    • λ ˆλ””μŠ€λŠ” λ‹¨μˆœν•œ 쿼리λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. λ³΅μž‘ν•œ 쑰건문, 쑰인 등을 μ§€μ›ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ™€ 같은 μš©λ„λ‘œλŠ” μ‚¬μš©ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
  3. μŠ€λ ˆλ“œ μ•ˆμ „μ„± λΆ€μ‘±
    • λ ˆλ””μŠ€λŠ” 기본적으둜 μŠ€λ ˆλ“œ μ•ˆμ „μ„±μ„ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ, λ©€ν‹°μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 좔가적인 ꡬ성이 ν•„μš”ν•©λ‹ˆλ‹€.
  4. 볡제 μ‹œμŠ€ν…œ ꡬ성이 λ³΅μž‘ν•¨
    • λ ˆλ””μŠ€λŠ” 볡제 κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λ§Œ, ꡬ성이 λ³΅μž‘ν•˜κ³  였λ₯˜ λ°œμƒ κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€.
  5. λ©”λͺ¨λ¦¬ λΆ€μ‘± μ‹œ 문제 λ°œμƒ
    • λ ˆλ””μŠ€λŠ” λ©”λͺ¨λ¦¬ 기반의 데이터 μ €μž₯ 방식을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, λ©”λͺ¨λ¦¬ λΆ€μ‘± μ‹œ μ‹œμŠ€ν…œ 전체에 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•