DB

[DB] Redis๋ž€?

s_ih_yun 2025. 6. 4. 00:56
728x90

 

 

 

 

1. Redis๋ž€?

๐Ÿ’ก REmote DIctionary Server ๋น ๋ฅธ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ํŠน์ง•
    1. Key-Value ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜
      • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ง€์› (๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ, ํ•ด์‹œ, ์ง‘ํ•ฉ, ์ •๋ ฌ๋œ ์ง‘ํ•ฉ ๋“ฑ)
    2. ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ****: ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
    3. NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ํ•˜๋‚˜
    4. ์˜์†์„ฑ
    5. ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘
      • ๋ช…๋ น์–ด๋ฅผ ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop) ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ
        • ๋ช…๋ น์–ด๋ฅผ Event Queue์— ์ ์žฌํ•˜๊ณ  ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ
      • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ๋„ ๋น ๋ฅธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
      • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ”ผํ•˜๊ธฐ ๊ฐ€๋Šฅ : Context Switch, Deadlock ๋ฐœ์ƒ X
    6. ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ (Master - Slave)
  • ๋‹จ์ 
    • ๋ฐ์ดํ„ฐ ์˜์†์„ฑ
    • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์ง€์› ๋ถ€์กฑ
    • ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ ์ œํ•œ
    • ํ•œ์ •๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
    • ์Šค์ผ€์ผ ์•„์›ƒ์˜ ์–ด๋ ค์›€
    • ํŠธ๋žœ์ ์…˜์˜ ์ œํ•œ

 

1.1. Key - Value ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

  • ํ‚ค (Key) : ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์—ญํ• 
    • ๋ฌธ์ž์—ด ํ˜•ํƒœ
  • ๊ฐ’ (Value) : ํ‚ค์— ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ๊ฐ’ ์˜๋ฏธ
    • ๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ, ํ•ด์‹œ, ์ง‘ํ•ฉ, ์ •๋ ฌ๋œ ์ง‘ํ•ฉ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ง€์›

 

1.2. ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ

  • ์ฃผ ๋ฉ”๋ชจ๋ฆฌ(RAM) ๋‚ด ๋ฐ์ดํ„ฐ ์ €์žฅ → ๋น ๋ฅธ ์‘๋‹ต ์†๋„
    • ๋””์Šคํฌ I/O ์˜ค๋ฒ„ํ—ค๋“œ ์—†๊ธฐ ๋•Œ๋ฌธ
  • ์ €์žฅ ๊ณต๊ฐ„์— ์ œ์•ฝ ๆœ‰
    • ์ฃผ๋กœ ๋ณด์กฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉ

 

1.3. NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • Not only SQL; ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„(Relation)๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ๋Œ€๋Ÿ‰์˜ ๋ถ„์‚ฐ๋œ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ / ์กฐํšŒํ•˜๋Š”๋ฐ ํŠนํ™”๋œ DB
    • ์Šคํ‚ค๋งˆ ์—†์ด ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋А์Šจํ•œ ์Šคํ‚ค๋งˆ ์ œ๊ณต
      • ์Šคํ‚ค๋งˆ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ ํ•ฉ
    • ์ฃผ๋กœ ๋น…ํ…Œ์ดํ„ฐ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ ํ•ฉ
  • ์žฅ์ 
    • RDBMS์— ๋น„ํ•ด ์ €๋ ดํ•œ ๋น„์šฉ์œผ๋กœ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ, ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์„ค๊ณ„ → ์„ค๊ณ„ ๋น„์šฉ ๊ฐ์†Œ
    • Big Data ์ฒ˜๋ฆฌ์— ํšจ๊ณผ์ 
    • ๊ฐ€๋ณ€์ ์ธ ๊ตฌ์กฐ
    • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œ ์—ฐํ•œ ๋ณ€ํ™” ๊ฐ€๋Šฅ
  • ๋‹จ์ 
    • ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์ค‘ ์žฅ์•  ๋ฐœ์ƒ ์‹œ, ๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐœ์ƒ ๊ฐ€๋Šฅ
    • ์ธ๋ฑ์Šค ๊ตฌ์กฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ → ๋งŽ์€ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์‹œ ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•„์š”
    • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ํ•ญ์ƒ ๋ณด์žฅ X

 

1.4. ์˜์†์„ฑ : ๋ฐ์ดํ„ฐ ๋ฐฑ์—…

  • ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ → ์‹œ์Šคํ…œ ์ข…๋ฃŒ / ์žฌ์‹œ์ž‘ / ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์กด โŒ
    • ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ €์žฅ ํ•„์š”
  • ๋ฐฑ์—…์„ ์œ„ํ•ด Redis์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜
    1. RDB (Redis DataBase) ์Šค๋ƒ…์ƒท
      • ์ฃผ๊ธฐ์ ์œผ๋กœ Redis DB์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์Šค๋ƒ…์ƒท ํŒŒ์ผ๋กœ ๋””์Šคํฌ์— ์ €์žฅ
      • ํ•„์š” ์‹œ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ์— ์‚ฌ์šฉ
    2. AOF (Append Only File) ๋กœ๊ทธ
      • ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก
      • Redis ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ์‹œ ๋กœ๊ทธ๋ฅผ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ

 

 

 

2. ํ™œ์šฉ ์‚ฌ๋ก€

  • ์ฃผ๋กœ ์บ์‹ฑ, ์„ธ์…˜ ๊ด€๋ฆฌ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค, ๋Œ€๊ธฐ์—ด ์ฒ˜๋ฆฌ ๋“ฑ ์šฉ๋„๋กœ ํ™œ์šฉ
    • ์บ์‹ฑ(Cashing) : ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ(One-Time PW), ๋กœ๊ทธ์ธ ์„ธ์…˜(Session), JWT(JSON Web Token), ์ผ์ • ์ฃผ๊ธฐ๋กœ ๊ฐฑ์‹ ํ•ด๋„ ๊ดœ์ฐฎ์€ ๋ฐ์ดํ„ฐ, ๋™์ผ ์—ฐ์‚ฐ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ
      • DB ์ฟผ๋ฆฌ๋‚˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜์—ฌ DB ๋ถ€ํ•˜ ์ค„์ด๊ณ  ๋น ๋ฅธ ์‘๋‹ต ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
    • ์„ธ์…˜ ์ €์žฅ์†Œ
      • ์„ธ์…˜ ํด๋Ÿฌ์Šคํƒ€๋ง, ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์ง€์›
    • ํ(Queue) : ์šฐ์„  ์ˆœ์œ„ ํ, ์ด๋ฉ”์ผ ์ „์†ก
    • ์‹ค์‹œ๊ฐ„ ๋ถ„์„ : ์ˆœ์œ„(Rank), ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ ๋กœ๊ทธ ์ฒ˜๋ฆฌ, ์กฐํšŒ์ˆ˜ ๊ณ„์‚ฐ
    • Pub / Sub ํŒจํ„ด : ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง• ์ฒ˜๋ฆฌ
  • ์ฃผ๋กœ RDBMS ๋“ฑ๊ณผ ํ•จ๊ป˜ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ
    • ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ) ์›น์„œ๋น„์Šค์—์„œ MySQL(๋งˆ์Šคํ„ฐ DB) + Redis(Cache) ๊ตฌ์„ฑ

 

 

 

 

 


๐Ÿ“Œ  References

https://velog.io/@dev_lee/Redis-%EB%A0%88%EB%94%94%EC%8A%A4-%EC%86%8C%EA%B0%9C%EC%99%80-%ED%8A%B9%EC%A7%95-%EB%B0%8F-%EC%9E%A5%EC%A0%90-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%8B%A4%EC%A0%9C-%ED%99%9C%EC%9A%A9-%EC%82%AC%EB%A1%80

https://pinggoopark.tistory.com/797

https://velog.io/@banggeunho/%EB%A0%88%EB%94%94%EC%8A%A4Redis-%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90.-%EC%A0%95%EC%9D%98-%EC%A0%80%EC%9E%A5%EB%B0%A9%EC%8B%9D-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%9C%A0%ED%9A%A8-%EA%B8%B0%EA%B0%84

https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8841492839

 

 

 

 

 

 

 

 

 

728x90