CS ๊ณต๋ถ€

Redis

์€์ง„ 2021. 11. 25. 21:04
  • WEB-WAS-DB์˜ ์ „ํ˜•์ ์ธ 3ํ‹ฐ์–ด ๊ตฌ์กฐ -> ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด DB์— ์Šฌ์Šฌ ๋ฌด๋ฆฌ๊ฐ€ ๊ฐ€๊ธฐ ์‹œ์ž‘
  • ๋งค transaction ๋งˆ๋‹ค ๋””์Šคํฌ์— ์ ‘๊ทผํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€ํ•˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ƒ๋‹นํžˆ ๋Š๋ ค์ง
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด DB๋งŒ์œผ๋กœ๋Š” ๋ถ€ํ•˜๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์—†์–ด ์บ์‹œ์„œ๋ฒ„ ๋„์ž…

 

 

์บ์‹œ

  • ํ•œ ๋ฒˆ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์˜์˜ ๊ณต๊ฐ„์— ์ €์žฅํ•˜์—ฌ ๋‹ค์Œ์— ์ฝ์„ ๋•Œ๋Š” ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ณต๊ฐ„
  • ๊ฐ™์€ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ๋ฒˆ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ ์บ์‹œ์„œ๋ฒ„์—์„œ ๋ฐ”๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜
  • DB๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ, ์„œ๋น„์Šค์˜ ๊ฐœ์„ 

 

 

cache Hit

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์„œ๋ฒ„์— ์š”์ฒญ
  2. ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— Cache์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
  3. Cache์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜

 

cache Miss

  1. cache ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด DB์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ
  2. DB๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜
  3. ์›น์„œ๋ฒ„๋Š” ๋ฐ˜ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์Œ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์บ์‹œ์— ์ €์žฅํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜

 

 

 

 

NOSQL

  • Not Only SQL, ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, RDBMS๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ์ˆ 
  • ํ‚ค-๊ฐ’์ด๋‚˜ ์ปฌ๋Ÿผ, ๋ฌธ์„œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ด์šฉ
    • NOSQL์˜ ์ข…๋ฅ˜ : ํ‚ค-๊ฐ’ (Redis, Memcached), ์ปฌ๋Ÿผ, ๋„ํ๋จผํŠธ, ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ
  • ์•„์ฃผ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ, ๋น ๋ฅธ ์“ฐ๊ธฐ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ •์„ฑ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ
  • ํŠน์ • ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ์—๋„ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด๋‚˜ ์„œ๋น„์Šค ์ค‘์ง€๊ฐ€ ์—†๋Š” ํ˜•ํƒœ์˜ ๊ตฌ์กฐ

 

 

Redis

  • ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์˜ “ํ‚ค-๊ฐ’” ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
    • ์บ์‹œ์„œ๋ฒ„๋Š” ์†๋„๋ฅผ ์œ„ํ•ด์„œ ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ
    • ์บ์‹œ์„œ๋ฒ„๋กœ ๋„๋ฆฌ ์“ฐ์ด๊ณ  ์žˆ๋Š” Redis
  • ์บ์‹œ ๋ฐ์ดํ„ฐ ์ €์žฅ, ์ธ์ฆ ํ† ํฐ ์ €์žฅ, Ranking Board ๋“ฑ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ
  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•˜๊ธฐ์— ๋น ๋ฅธ Read, Write ์†๋„๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋น„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

 

 

 

Redis Collection ์—์„œ ์ง€์›ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ 

  • ํฌ๊ฒŒ 5๊ฐ€์ง€< String, Set, Sorted Set, Hash, List >์˜ ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ง€์›
  1. String : ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋กœ, key - value ๋กœ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.
  2. Set : ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ €์žฅํ•˜๋ฉด ์ตœ์ข… ํ•œ๋ฒˆ๋งŒ ์ €์žฅ๋œ๋‹ค.
    ์ด๊ฑธ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ๋‹ค ๊ฐ–๊ณ ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์ด ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  3. List : Array ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค. List ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ๊ณผ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š”๊ฑด ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š”๊ฑด ์–ด๋ ค์›€์ด ์žˆ๋‹ค.
  4. Sorted Set : ์œ ์ € ๋žญํ‚น ๋ณด๋“œ์„œ๋ฒ„ ๊ฐ™์€ ๊ตฌํ˜„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 
  5. Hash : ํ‚ค-๊ฐ’์˜ ๊ตฌ์กฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€์ง„ object ํƒ€์ž…์„ ์ €์žฅํ•˜๊ธฐ ์ข‹์€ ๊ตฌ์กฐ์ด๋‹ค.

 

 

 

 

 

Redis์˜ ํŠน์ง•

  • value ๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ, Set, Sorted set, Hash ๋“ฑ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์›
  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—์„œ ๋™์‹œ์— ๊ฐ™์€ key์— ๋Œ€ํ•œ ๊ฐฑ์‹ ์„ ์š”์ฒญํ•  ๊ฒฝ์šฐ, Atomic ์ฒ˜๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ๋ถ€์ •ํ•ฉ ๋ฐฉ์ง€ Atomic ์„ ์ž˜ ์ง€ํ‚ด
  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด์„œ ์˜์†์ ์ธ ๋ฐ์ดํ„ฐ ๋ณด์กด, ์žฅ์•  ์‹œ ๋ณต๊ตฌ๊ฐ€๋Šฅ (๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ)
  • Redis Server๋Š” Single threaded๋กœ ์ˆ˜ํ–‰
    • ํ•œ ๋ฒˆ์— ๋”ฑ ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋งŒ ์‹คํ–‰ --> Atomic ๋ณด์žฅ 

 

 

 

 

 

 

 

์ถœ์ฒ˜

Dayone, https://brunch.co.kr/@jehovah/20

 

Redis ๊ธฐ๋ณธ ์ •๋ฆฌ

์บ์‹œ๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ˆœ๊ฐ„! | ์บ์‹œ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„ ์„œ๋น„์Šค๋ฅผ ์ฒ˜์Œ ์šด์˜ํ•  ๋•Œ๋Š” WEB-WAS-DB์˜ ์ „ํ˜•์ ์ธ 3ํ‹ฐ์–ด ๊ตฌ์กฐ๋ฅผ ์ทจํ•˜๋Š” ํŽธ์ด ๋ณดํ†ต์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ช‡ ๋ช… ๋˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ์—๋Š” 3ํ‹ฐ์–ด

brunch.co.kr

hyeondev, https://velog.io/@hyeondev/Redis-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C#%EC%BA%90%EC%8B%9C%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%A0-%EB%95%8C

 

Redis ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋‚ด๊ฐ€ Redis ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์šฐ์•„ํ•œ ๋ ˆ๋””์Šค ์„ธ๋ฏธ๋‚˜ ์˜์ƒ์„ ๋ณด๊ณ  ๊ณต๋ถ€ํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค ๐ŸคŸ๐Ÿป

velog.io