๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/Redis

[Redis] ch.1 ์‹œ์ž‘ํ•˜๊ธฐ / ch.2 ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฟผ๋ฆฌํ•˜๋Š” ๋ช…๋ น์–ด

by OR15A 2024. 1. 25.

https://github.com/HongHyeongJu/StudySpace/blob/main/database/Redis/Redis_%ED%95%99%EC%8A%B5%EB%85%B8%ED%8A%B8_01.md

์œ ๋ฐ๋ฏธ Redis : ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Redis ์™„๋ฒฝ ๊ฐ€์ด๋“œ

ch.01 - ์‹œ์ž‘ํ•˜๊ธฐ && ch.02 - ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฟผ๋ฆฌํ•˜๋Š” ๋ช…๋ น์–ด



Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๋ฐ์ดํ„ฐ๋ฅผ ์•„์ฃผ ์งœ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•จ
    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์•„์ฃผ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌํ•จ : ๋ฐ์ดํ„ฐ๊ฐ€ HashMap, List ๋“ฑ๊ณผ ๊ฐ™์€ ๊ณ ์ „์ ์ธ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ๋จ
    • ์˜๋„์ ์œผ๋กœ ์•„์ฃผ ๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ๋งŒ ๊ฐ–์ถ”๊ณ  ์žˆ์Œ

์ดˆ๊ธฐ์„ค์ •

  • https://redis.com/
  • ํšŒ์›๊ฐ€์ž… - ๋ฌด๋ฃŒ free ํ”Œ๋žœ ์ƒ์„ฑ + DB์ƒ์„ฑ
  • Redis ๋ช…๋ น์–ด ์‹คํ–‰ ๋ฐฉ๋ฒ•
    • rbook.cloud ์ด์šฉํ•˜๊ธฐ
    • rbook์„ ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ
    • Redis-CLI ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ๋ณธ ๋ช…๋ น์–ด

  • ๋ช…๋ น์–ด : ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ดํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „์†กํ•˜๋Š” ๋ฌธ์ž์—ด
  • SET, GET ๋‹ค์Œ์˜ ๋‹จ์–ด๋ฅผ ket๋‚˜ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ €์žฅํ•จ
    • SET message 'Hi there!' key: message / value : 'Hi there!'
      • GET message
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž… : String, List, Hash, Set, Sorted Set, Bitmap, Hyperloglog, Json, Index
  • ๊ฐ ๋ช…๋ น์–ด ์œ ์‚ฌํ•œ ๊ฒƒ์„ ๋ฌถ์–ด์„œ ์ดํ•ดํ•˜๋ฉด ์ข‹์Œ (๋ธ”๋กœ๊ทธ์— ํ‘œ๋กœ ์ •๋ฆฌํ•˜๊ธฐ)
  • ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์€ ๊ณต์‹๋ฌธ์„œ redis.io/commands
  • ๊ณต์‹๋ฌธ์„œ ์ดํ•ดํ•˜๊ธฐ
    • Filter by group์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐํƒ€์ž… ์„ ํƒํ•˜๊ธฐ
    • ๋ช…๋ น์–ด ์„ ํƒํ•˜๊ธฐ
    • ํ—ค๋”ฉ ํ…์ŠคํŠธ ์ดํ•ดํ•˜๊ธฐ

๋ฌธ์ž์—ด ๊ธฐ๋ณธ ๋ช…๋ น์–ด

  • ex) SET key value SET key value [NX | XX] [GET] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
    • ๋Œ€๋ฌธ์ž : ๋ช…๋ น์–ด
    • ์†Œ๋ฌธ์ž : ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’
    • ๋Œ€๊ด„ํ˜ธ ์•ˆ์˜ ๋‹จ์–ด : ์„ ํƒ์‚ฌํ•ญ, ์„ ํƒ์ ์ธ ์ธํ›„ -> ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ 
    • ๊ธฐํ˜ธ | : OR์˜ ์˜๋ฏธ
  • SET ๋ณ€ํ˜• ๋ช…๋ น์–ด
    • SET + key + value + ํ‚ค๋ฅผ ์„ค์ •ํ•  ์กฐ๊ฑด ๋ช…์‹œ + ํ‚ค๋ฅผ ์„ค์ •ํ–ˆ์„ ๋•Œ ์ด์ „์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๊ฐ’ ๋ฐ˜ํ™˜ + ๋งŒ๋ฃŒ์‹œ๊ฐ„
    • SET + key + value + [NX | XX] + [GET] + ๋งŒ๋ฃŒ์‹œ๊ฐ„
  • ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์žˆ๋Š” ๋ฌธ์ž์—ด ์ €์žฅ์‹œ ""๋กœ ๊ฐ์‹ธ๊ธฐ

ํ‚ค ์„ค์ • ์กฐ๊ฑด

  • [NX | XX]
  • NX (Not eXists)
    • ํ•ด๋‹น ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ ๊ฐ’์„ ์„ค์ •
    • ์ด๋ฏธ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋ช…๋ น์–ด๋Š” ์•„๋ฌด๋Ÿฐ ๋™์ž‘์„ ํ•˜์ง€ ์•Š์Œ
  • XX (eXists)
    • ํ•ด๋‹น ํ‚ค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•  ๋•Œ๋งŒ ๊ฐ’์„ ์„ค์ •
    • ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์–ด๋Š” ์•„๋ฌด๋Ÿฐ ๋™์ž‘์„ ํ•˜์ง€ ์•Š์Œ

๋งŒ๋ฃŒ ์˜ต์…˜ ์‚ฌ์šฉ ์‚ฌ๋ก€

  • [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
  • Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ๋ฃŒ๋˜์–ด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ ์ง€ ์—ฌ๋ถ€ ๊ฒฐ์ •ํ•˜๋Š” ์„ ํƒ์  ์ธ์ˆ˜
    • EX (EXpire)
      • ์„ค์ •๋œ ์‹œ๊ฐ„(์ดˆ ๋‹จ์œ„) ํ›„์— ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋˜๋„๋ก ํ•จ
      • ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์ด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋จ
    • PX (Pexpire)
      • EX์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์‹œ๊ฐ„ ๋‹จ์œ„๊ฐ€ ๋ฐ€๋ฆฌ์ดˆ
    • EXAT
      • ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋  UNIX ์‹œ๊ฐ„(์ดˆ ๋‹จ์œ„)์„ ์ง€์ •
      • ์ด ์‹œ๊ฐ„์— ๋„๋‹ฌํ•˜๋ฉด ํ‚ค๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œ๋จ
    • PXAT
      • EXAT์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์‹œ๊ฐ„ ๋‹จ์œ„๊ฐ€ ๋ฐ€๋ฆฌ์ดˆ
    • KEEPTTL (KEEP Time To Live)
      • ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ํ‚ค์˜ TTL(Time To Live, ๋งŒ๋ฃŒ ์‹œ๊ฐ„)์„ ์œ ์ง€
      • ํ‚ค์— ์ƒˆ ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ๊ธฐ์กด์˜ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•จ
  • ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์‚ฌ์šฉ ์ด์œ 
    • Redis์˜ ๊ทผ๋ณธ์ ์ธ ์šฉ๋„ : Redis๋Š” ๋ณธ๋ž˜ ์บ์‹ฑ ์„œ๋ฒ„๋กœ ์„ค๊ณ„๋˜์—ˆ์Œ (ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ €์žฅํ•œ ๋‹ค์Œ ํ•„์š”ํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋ฉด ์‚ญ์ œ)
    • Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์บ์‹ฑํ•œ ๊ฐ’์ด๋ฏ€๋กœ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ
    • Redis์˜ ๊ทผ๋ณธ์ ์ธ ์šฉ๋„๊ฐ€ ์บ์‹ฑ ์„œ๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•ด ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜์ง€ ์•Š๋„๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ
  • Redis์˜ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ฐฝ์˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์ง€๋งŒ ๋Œ€ํ‘œ์ ์ธ ์ด์œ ๋Š” ์บ์‹ฑ

SETEX, SETNX, MSET, MSETNX

  • SETEX = SET + EX
  • SETNX = SET + NX
  • MSET
    • ์—ฌ๋Ÿฌ ํ‚ค ์Œ ์ €์žฅ ๋™์‹œ ๊ฑฐ์žฅ ๊ฐ€๋Šฅํ•จ
    • SET์„ ๋ฐ˜๋ณตํ•ด์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ
    • MSET color red onekey twokey -> ๊บผ๋‚ด๊ธฐ GET onekey => red, GET twokey => red
  • MSETNX = MSET + NX

GET๊ณผ MGET

  • GET + ๊ฐ€์ ธ์˜ฌ ํ‚ค์˜ ์ด๋ฆ„
  • MGET : ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด์—์„œ ์—ฌ๋Ÿฌ ํ‚ค์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
    • MSET onekey twokey -> "red", "red"

๋ฌธ์ž์—ด ๋ฒ”์œ„

  • DEL
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š” ํ‚ค์™€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•จ
    • ๋ฌธ์ž์—ด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ž๋ฃŒํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • GETRANGE
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด ์กด์žฌํ•˜๋Š” ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฒ”์œ„์˜ ๋ฌธ์ž๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
    • ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
    • model์— 'black'์ด ์ €์žฅ๋˜์–ด ์žˆ์„ ๋•Œ : GETRANGE model 0 2 => "bla"
  • SETRANGE
    • GETRANGE์˜ ๋ฐ˜๋Œ€
    • ๊ธฐ์กด ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ
    • model์— 'black'์ด ์ €์žฅ๋˜์–ด ์žˆ์„ ๋•Œ : SETRANGE model 2 ooo => ์ธ๋ฑ์Šค 2๋ถ€ํ„ฐ ๋Œ€์ฒดํ•จ "blooo"

๋ช…๋ น์–ด ์‘์šฉํ•˜๊ธฐ

  • ์˜ˆ์‹œ
    • ์ž์ฃผ์“ฐ๋Š” ๊ฐ€๊ตฌ Map data๊ฐ€ ์žˆ์„ ๋•Œ => ๊ฐ€๊ตฌ ์ œํ’ˆ์˜ ๋ชฉ๋ก์„ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
    • (๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  ๊ฐ„๋‹จํ•œ ๊ฐ’๋งŒ ์ธ์ฝ”๋”ฉ)
    • ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์†์„ฑ์„ ์ธ์ฝ”๋”ฉํ•œ ๋ฌธ์ž๋ฅผ ํ•ฉ์ณ์„œ ๋ฌธ์ž์—ด๋กœ ์ €์žฅ => item1 : aqg / item2 : qop / item3 : cir
    • ๊ฐ€๋Šฅํ•œ ์ •๋ณด๋ฅผ ์••์ถ•ํ•ด ๋‹จ์ผ ๋ฌธ์ž๋กœ ๊ฐ’์„ ์ธ์ฝ”๋”ฉ ํ•  ์ˆ˜ ์žˆ์Œ!!

์ˆซ์ž ๋‹ค๋ฃจ๊ธฐ

  • ๋ฌธ์ž์—ด์— ์‚ฌ์šฉํ•˜๋˜ ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ช…๋ น์–ด๋ฅผ ์ˆซ์ž๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • SET, GET, MGET, MSET ๋“ฑ์„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  SET ๋ช…๋ น์–ด์˜ ์˜ต์…˜๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ
  • ์ˆซ์ž๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” ์ˆซ์ž๋งŒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ถ”๊ฐ€ ๋ช…๋ น์–ด ์žˆ์Œ
    • DECR, DECRBY, INCRBY, INCR, INCRBYFLOAT
    • ๋ฌธ์ž์—ด ํ‚ค์— ์‚ฌ์šฉ X => ์‚ฌ์šฉ ์‹œ Redis๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • INCR
    • ๊ธฐ์กด์˜ ์ˆซ์ž์— 1 ๋”ํ•จ
    • SET age 20 -> INCR age -> 21
  • DECR
    • ๊ธฐ์กด์˜ ์ˆซ์ž์—์„œ 1 ๋บŒ
    • SET age 20 -> DECR age -> 19
  • INCRBY
    • ๊ธฐ์กด์˜ ์ˆซ์ž์— ๋”ํ•จ (๊ฐ’์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ 1)
    • SET age 20 -> INCRBY age 20 -> 40
  • DECRBY
    • ๊ธฐ์กด์˜ ์ˆซ์ž์—์„œ ๋บŒ (๊ฐ’์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ 1)
    • SET age 20 -> DECRBY age 10 -> 10
  • INCRBYFLOAT
    • ์†Œ์ˆ˜์ ์ด ์žˆ๋Š” ํ”Œ๋กœํŠธ ๊ฐ’์„ ์ฒ˜๋ฆฌ
    • INCRBYFLOAT์— ํ‚ค ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์†Œ์ˆ˜์ ์ด ์žˆ๋Š” ์ˆซ์ž๋ฅผ ์ „๋‹ฌ
    • ๋บ„์ƒ˜ ํ•˜๋ ค๋ฉด ์Œ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ
    • SET age 20 -> INCRBYFLOAT age 6.400145
    • SET age 20 -> INCRBYFLOAT age -6.400145

์ˆซ์ž ๋ช…๋ น์–ด์˜ ์กด์žฌ ์ด์œ 

  • INCR ๋ช…๋ น์–ด
    • [1] ๊ฐ’์„ ํ™•์ธ
    • [2] ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ์ €์žฅ
    • ex) ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ, ์ด๋ฏธ์ง€ ๋˜๋Š” ๋Œ“๊ธ€์˜ ์ถ”์ฒœ ์ˆ˜ ์ฆ๊ฐ€
  • GET, SET์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์˜ ๋‹จ์ 
    • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— 2๋ฒˆ ์ ‘๊ทผํ•ด์•ผ ํ•จ(API์„œ๋ฒ„์—์„œ Redis์— ์š”์ฒญ์„ 2๋ฒˆ ํ•ด์•ผํ•จ)
    • ํŠน์ • ๊ฒŒ์‹œ๋ฌผ์„ ์ถ”์ฒœํ•˜๋Š” ์š”์ฒญ์ด API ์„œ๋ฒ„์— ๋™์‹œ์— ๋“ค์–ด์™”์„ ๊ฒฝ์šฐ(์—„์ฒญ๋‚œ ์–‘์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ๊ฐ€๋”์˜ ๊ฒฝ์šฐ) ์ž˜๋ชป๋œ ์—†๋ฐ์ดํŠธ ๋  ์ˆ˜ ์žˆ์Œ
  • ์œ„ ๊ฒฝ์šฐ์˜ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 3๊ฐ€์ง€
    • ํŠน์ˆ˜ํ•œ ๋ช…๋ น์–ด์ธ Watch๋ฅผ ํ†ตํ•œ Redis ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ
    • ๋ฝ์„ ์‚ฌ์šฉํ•˜๊ธฐ
    • INCR ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ(ํ•œ๊ฐ€์ง€ ๋ช…๋ น์–ด ์‚ฌ์šฉ)
  • ์ค‘์š”
    • Redis๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™๊ธฐ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ๋•Œ ๋™์‹œ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ ๊ธฐ์–ตํ•˜๊ธฐ!!
    • ์—ฌ๋Ÿฌ API์—์„œ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ํ•ญ์ƒ ๋™์‹œ์„ฑ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผํ•จ