[Computer Science][Database] ๐Ÿš€ ์ดˆ๊ณ ์† ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค! Redis์˜ ๋ชจ๋“  ๊ฒƒ

๊น€์ƒ์šฑยท2024๋…„ 10์›” 11์ผ
post-thumbnail

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

โšก RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ ? - ์ดˆ๊ณ ์†์˜ ๋น„๋ฐ€

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•˜๋“œ ๋””์Šคํฌ๋‚˜ SSD์™€ ๊ฐ™์€ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ์ €์žฅ ๋งค์ฒด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Redis๋Š” RAM์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” ๋งค์šฐ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์†๋„๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•  ํ•„์š”๊ฐ€ ์—†์–ด I/O ์ง€์—ฐ์ด ์—†๊ณ , ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ํŠนํžˆ ์›น ์„œ๋น„์Šค์—์„œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋‚˜ ์บ์‹ฑ ์‹œ์Šคํ…œ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

๐Ÿ”„ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ !

์„ธ์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์„œ๋ฒ„์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋™์•ˆ, ์‚ฌ์šฉ์ž ์ƒํƒœ๋‚˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ, ์„ธ์…˜์— ์‚ฌ์šฉ์ž ์ •๋ณด๋‚˜ ์ธ์ฆ ํ† ํฐ์„ ์ €์žฅํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๊ฐ€ ํ˜‘๋ ฅํ•ด์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์ด๋‚˜ ๊ฐ€์šฉ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ์ด๋ฃจ์–ด์ง„ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„ A์— ์ ‘์†ํ–ˆ๋‹ค๊ฐ€, ๋‹ค์Œ ์š”์ฒญ์ด ์„œ๋ฒ„ B๋กœ ๋ผ์šฐํŒ…๋˜๋”๋ผ๋„ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์€ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ ๋™๊ธฐํ™”ํ•˜์—ฌ ์–ด๋А ์„œ๋ฒ„์—์„œ๋“  ๋™์ผํ•œ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ ์ด ๋•Œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ Redis๋Š” ์ค‘์•™ ์ €์žฅ์†Œ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์•™์„œ๋ฒ„๋‚˜ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์—ฌ ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Redis๋Š” ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์œ„ํ•ด ํ”ํžˆ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ Redis์— ์ €์žฅํ•จ์œผ๋กœ์จ, ์„œ๋ฒ„ ๊ฐ„์— ์„ธ์…˜์„ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž ์„ธ์…˜ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ณ , ์„ธ์…˜ ์œ ์ง€๋ฅผ ์œ„ํ•œ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ฅ RAM ๋‚ ์•„๊ฐ€๋ฉด ๋? ๋ฐ์ดํ„ฐ ์œ ์‹ค ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•!

Redis๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ๊บผ์ง€๊ฑฐ๋‚˜ RAM์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Redis๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐฑ์—… ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ์Šค๋ƒ…์ƒท(Snapshot): ํŠน์ • ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • AOF(Append Only File): ๋ชจ๋“  ์“ฐ๊ธฐ ๋ช…๋ น์„ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น ๋ช…๋ น์„ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋žต์ž…๋‹ˆ๋‹ค.

๐Ÿงฉ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ? ์ž์œ ๋กญ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” Redis

Redis๋Š” ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. Redis์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Key-Value ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ • ํ˜•์‹์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ์ž์œ ๋กญ๊ฒŒ ์ €์žฅ๋˜๊ณ  ์กฐํšŒ๋  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“‚ String๋ถ€ํ„ฐ Hash๊นŒ์ง€! Redis์˜ 5๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ํƒ€์ž…

Redis๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์›ํ•˜๋ฉฐ, ๊ฐ ํƒ€์ž…์€ ํŠน์ •ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • String: ๊ธฐ๋ณธ์ ์ธ ํ…์ŠคํŠธ์™€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ 512MB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆซ์ž ์—ฐ์‚ฐ์ด๋‚˜ ๋ฌธ์ž์—ด ์กฐ์ž‘์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Set: ์ง‘ํ•ฉ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Sorted Set: ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ, ์ฃผ๋กœ ์ ์ˆ˜(Score)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Hash: ํ•„๋“œ์™€ ๊ฐ’์˜ ์Œ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ, ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • List: ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์Šคํƒ, ํ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ ์ด๋ž˜์„œ ๋‹ค๋“ค ์“ฐ๋Š”๊ตฌ๋‚˜! Redis์˜ ์žฅ์ ๊ณผ ํ™œ์šฉ

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

๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— RAM ์šฉ๋Ÿ‰์ด ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์บ์‹ฑ ์ „๋žต์„ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Redis๋Š” ๋†’์€ ์„ฑ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์œ ์‹ค ๋ฐฉ์ง€์— ์‹ ๊ฒฝ ์จ์•ผ ํ•˜๊ณ , ๋ณต๊ตฌ ์ „๋žต์„ ์ž˜ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€