๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/Web

in-memory / cache / redis / memcached

by 1mj 2022. 7. 10.

in-memory

์ปดํ“จํ„ฐ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์ธ RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ ค์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ

 

in-memory DB

  • ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ๊ฐ„ ๋ณ‘๋ชฉ์ด ์—†์–ด SSD, HDD ๊ฐ™์€ ์ €์žฅ๊ณต๊ฐ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  • ์†๋„๊ฐ€ ๋น ๋ฅธ ๋Œ€์‹  ๋น„์šฉ์ด ๋น„์‹ธ ํฐ ์šฉ๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜์†์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์•„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” DB๋ฉด in-memory DB๋ผ๊ณ  ํ•œ๋‹ค.
  • RDBMS์ธ MySQL์—์„œ๋„ in-memory ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๊ณ , NoSQL์ธ Redis๋„ in-memory DB์ด๋‹ค.
โœ” disk-based DB
์™ธ๋ถ€ ์ €์žฅ ์žฅ์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ , ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

 

in-memory cache

์บ์‹œ๋ž€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ๋ฅผ ๋งํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์˜๊ตฌ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅํ•ด๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋™์ผํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ๋น ๋ฅธ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋งŽ์€ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ์„œ๋น„์Šค ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

Redis

Key-Value ํ˜•ํƒœ์˜ NoSQL, ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ

  • ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ์—ญํ• ์„ ํ•˜๋Š” ๋ณด์กฐ์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • ํ‚ค-๊ฐ’ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, I/O๊ฐ€ ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•ด ํšจ์œจ์ด ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ข‹์•„์š” ์ฒ˜๋ฆฌ๋‚˜ ๋ฐฉ๋ฌธ์ž ์ˆ˜ ๋“ฑ ๊ฐ™์€ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Redis ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

Redis๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•œ๋‹ค.

  • ๋ฌธ์ž์—ด(string)
  • ํ•ด์‹œ(hash)
  • ๋ฆฌ์ŠคํŠธ(list)
  • ์ง‘ํ•ฉ(set)
  • ์ •๋ ฌ๋œ ์ง‘ํ•ฉ(sorted set)
  • ๋น„ํŠธ๋งต(bitmap)
  • ํ•˜์ดํผ๋กœ๊ทธ ๋กœ๊ทธ(hyperloglog)
  • ์ง€๋ฆฌ๊ณต๊ฐ„ ์ธ๋ฑ์Šค(geospatial indexe)
  • ์ŠคํŠธ๋ฆผ(stream)

 

Memcached

๋ถ„์‚ฐ ๋ฉ”๋ชจ๋ฆฌ ์บ์‹ฑ ์‹œ์Šคํ…œ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜๋ฅผ ์™„ํ™”์‹œํ‚ค๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ ์Šค์ผ€์ผ์—…์„ ํ†ตํ•ด ๋” ๋งŽ์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
โœ” Redis vs. Memcached
Redis๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜๊ณ  ํŠน์ •ํ•œ ์‹œ์  ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” snapshot๊ธฐ๋Šฅ๊ณผ ํŠธ๋žœ์ ์…˜ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•˜์ง€๋งŒ, Redis๋Š” ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ 1๋ฒˆ์— 1๊ฐœ์˜ ๋ช…๋ น์–ด๋งŒ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” Memcached์™€๋Š” ์†๋„ ์ฐจ์ด๊ฐ€ ์žˆ๊ณ  ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ ์ž๋ฃŒ ๋ฐ ์ถœ์ฒ˜ ๐Ÿ™‡‍โ™‚๏ธ

https://zangzangs.tistory.com/72
https://chrisjune-13837.medium.com/redis-vs-memcached-10e796ddd717

๋Œ“๊ธ€