Hello Kitty Eyes Shut
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป๊ณต๋ถ€ ๊ธฐ๋ก/๐Ÿ“Œ Backend

[Backend] Redis์˜ ํŠน์ง•: ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€

๋ฐ˜์‘ํ˜•
๋ชฉ์ฐจ (OPEN)

 

 

 

Redis ๊ธฐ๋ณธ ๊ฐœ๋…

Redis๋ž€

Redis๋ž€ Remote Dictionary Server์˜ ์•ฝ์ž๋กœ,

ํ‚ค (Key) - ๊ฐ’ (Value) ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋น„๊ด€๊ณ„ํ˜• (NoSQL) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (DBMS) ์ด๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋œ Redis๋Š”, ๋ฐ์ดํ„ฐ๋ฅผ ์ธ-๋ฉ”๋ชจ๋ฆฌ(In-memory) ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ €์žฅ์†Œ๋กœ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.

 

์ธ-๋ฉ”๋ชจ๋ฆฌ (In-memory) ๋ž€

์ธ-๋ฉ”๋ชจ๋ฆฌ (In-memory)๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ์ €์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋“œ๋””์Šคํฌ๋‚˜ SSD์™€ ๊ฐ™์€ ์ €์žฅ ์žฅ์น˜์— ์ €์žฅํ•˜๋Š” ๋ฐ˜๋ฉด,

Redis๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ํŠนํžˆ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋‚˜ ์บ์‹ฑ ๊ฐ™์€ ์ž‘์—…์— ๋งค์šฐ ์ ํ•ฉํ•˜๋ฉฐ,

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

๋””์Šคํฌ ๊ธฐ๋ฐ˜ ์ปดํ“จํŒ…๊ณผ ์ธ-๋ฉ”๋ชจ๋ฆฌ ์ปดํ“จํŒ… ๋น„๊ต

 

ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํœ˜๋ฐœ์„ฑ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ

์„œ๋ฒ„๊ฐ€ ๊บผ์ง€๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์งˆ ์œ„ํ—˜์ด ์žˆ๋Š”๋ฐ,

Redis๋Š” ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ €์žฅ ์žฅ์น˜(๋””์Šคํฌ)์— ๋ฐฑ์—…ํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ ๋ณต์ œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์†์‹ค ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ๋•๋ถ„์— Redis๋Š” ์ธ-๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์žฅ์ ์„ ์‚ด๋ฆฌ๋ฉด์„œ๋„ ๋‹จ์ ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋กœ ์ž๋ฆฌ ์žก์•˜๋‹ค.

 

Redis์™€ NoSQL

2010๋…„์ฏค๋ถ€ํ„ฐ NoSQL์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์œ ํ–‰ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

NoSQL์€ ์ „ํ†ต์ ์ธ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋œปํ•˜๋Š”๋ฐ,

Key-Value Store (KVS), ์—ด ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ์ด ์—ฌ๊ธฐ์— ํฌํ•จ๋œ๋‹ค.

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

 

๋ฌผ๋ก , ์ „ํ†ต์ ์ธ RDBMS(Relational Database Management System)๋„ ์—ฌ์ „ํžˆ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ง€๋งŒ,
RDBMS ํŠน์„ฑ์ƒ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ถ€๋ถ„๋“ค์ด ์žˆ์„ ๋•Œ NoSQL์ด ๋Œ€์•ˆ์œผ๋กœ ๋– ์˜ค๋ฅด๊ณค ํ•œ๋‹ค.

๊ฒฐ๊ตญ, NoSQL๊ณผ RDBMS๋Š” ์šฐ์—ด์„ ๊ฐ€๋ฆฌ๊ธฐ๋ณด๋‹ค๋Š” ์„œ๋กœ์˜ ๊ฐ•์ ๊ณผ ์•ฝ์ ์„ ๋ณด์™„ํ•˜๋Š” ๊ด€๊ณ„๋ผ๊ณ  ๋ณด๋Š” ๊ฒŒ ๋งž์„ ๊ฒƒ์ด๋‹ค.

 

ํ•ญ๋ชฉ RDBMS NoSQL
๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์ •ํ˜• ๋ฐ์ดํ„ฐ
(ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ ํ–‰๊ณผ ์—ด)
๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ
(Key-Value , ์—ด ์ง€ํ–ฅ, ๋ฌธ์„œ, ๊ทธ๋ž˜ํ”„ ๋“ฑ)
์Šคํ‚ค๋งˆ ๊ณ ์ •๋œ ์Šคํ‚ค๋งˆ ์‚ฌ์šฉ ๊ณ ์ • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ ์‚ฌ์šฉ
๊ด€๊ณ„ ์ •์˜ ๋ฐ์ดํ„ฐ ๊ฐ„ ๋ช…์‹œ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•จ
(Primary Key, Foreign Key ๋“ฑ)
๋ฐ์ดํ„ฐ ๊ฐ„ ๋ช…์‹œ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์Œ
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์–ธ์–ด SQL (๊ตฌ์กฐ์  ์งˆ์˜ ์–ธ์–ด) ์‚ฌ์šฉ ๋‹ค์–‘ํ•œ API์™€ ์ฟผ๋ฆฌ ์–ธ์–ด ์‚ฌ์šฉ
ํ™•์žฅ์„ฑ ์ˆ˜์ง์  ํ™•์žฅ
(Scale-up, ๊ธฐ์กด ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ)
์ˆ˜ํ‰์  ํ™•์žฅ
(Scale-out, ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™•์žฅ)
์„ฑ๋Šฅ ๋ณต์žกํ•œ ๊ด€๊ณ„ํ˜• ์ฟผ๋ฆฌ์— ์ตœ์ ํ™”๋จ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์™€
๋น ๋ฅธ ์ฝ๊ธฐ/ ์“ฐ๊ธฐ ์ž‘์—…์— ์ตœ์ ํ™”๋จ
์œ ํ˜• ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งŒ ์ง€์›ํ•จ Key-Value Store, ๋ฌธ์„œํ˜• ๋“ฑ
๋‹ค์–‘ํ•œ ์œ ํ˜•์„ ์ง€์›ํ•จ
ํŠธ๋žœ์žญ์…˜ ์ง€์› ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜ ์ง€์›
(ACID ์™„์ „ ์ง€์›)
์ œํ•œ์ ์ด๊ฑฐ๋‚˜ ์•ฝํ•œ ํŠธ๋žœ์žญ์…˜ ์ง€์›
(ACID ์ง€์›์ด ์ œํ•œ์ )
๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ ์ œ๊ณต ์ตœ์ข…์  ์ผ๊ด€์„ฑ ์ œ๊ณต
(์ผ๋ถ€ NoSQL์—์„œ๋Š”
๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ๋„ ์ง€์› ๊ฐ€๋Šฅ)
์ €์žฅ ๋ฐฉ์‹ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ์ €์žฅ์†Œ ์‚ฌ์šฉ ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋„๋Š” ๋ถ„์‚ฐ ์ €์žฅ์†Œ ์‚ฌ์šฉ
์œ ์—ฐ์„ฑ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์ด ์–ด๋ ต๊ณ ,
๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์ด ๋ณต์žกํ•จ
๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง๊ณผ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์ด ์œ ์—ฐํ•จ
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ ๋น ๋ฅธ ์ฝ๊ธฐ / ์“ฐ๊ธฐ ์†๋„ ์ œ๊ณต
(ํŠนํžˆ, ์‹ค์‹œ๊ฐ„ ์ž‘์—…์— ์ ํ•ฉํ•จ)
์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€ ๊ธˆ์œต, ERP ๋“ฑ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ
๊ด€๊ณ„๊ฐ€ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ
์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„, IoT, ์†Œ์…œ ๋„คํŠธ์›Œํฌ
๋Œ€ํ‘œ์ ์ธ ์‹œ์Šคํ…œ MySQL, PostgreSQL ๋“ฑ Redis, MongoDB ๋“ฑ

 

Redis๋Š” ์ด๋Ÿฌํ•œ NoSQL์˜ ๋ฒ”์ฃผ์— ํฌํ•จ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ๋ฐ,
ํŠนํžˆ, Redis๋Š” ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ์œ ์—ฐํ•œ ๊ตฌ์กฐ ๋•๋ถ„์— ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋ถ„์•ผ์—์„œ ํฐ ํ™œ์•ฝ์„ ํ•˜๊ณ  ์žˆ๋‹ค.

 

๋˜ํ•œ, ์ตœ๊ทผ์—๋Š” RDBMS์™€ Redis๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋ก€๋„ ์ ์  ๋Š˜๊ณ  ์žˆ๋Š”๋ฐ,

์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์กฐํ•ฉํ•˜๋ฉด ์„œ๋กœ์˜ ๊ฐ•์ ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ฉฐ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์„œ๋น„์Šค์—์„œ๋Š” MySQL (๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค) + Redis (์บ์‹œ)์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋Œ€ํ‘œ์ ์ด๋‹ค.

 

 

 

 

Redis์˜ ํŠน์ง•

์„ฑ๋Šฅ

Redis๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์ธ๋‹ค.

ํ‰๊ท ์ ์œผ๋กœ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์†๋„๋Š” 1ms๋กœ ๋งค์šฐ ๋น ๋ฅด๋ฉฐ, ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„ํ•ด ์›”๋“ฑํ•œ ์„ฑ๋Šฅ์„ ์ž๋ž‘ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

Redis๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์›ํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” String, List, Set, Hash, Sorted Set, Bitmap, JSON ๋“ฑ์ด ์žˆ์œผ๋ฉฐ,

์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐœ๋ฐœ ์šฉ์ด์„ฑ

Redis๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด ํ•„์š” ์—†๊ณ , ๋‹จ์ˆœํ•œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ์กฐํšŒ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, Java, Python, C, C++, C#, JavaScript, PHP, Node.js, Ruby ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ธฐ์— ๊ฐœ๋ฐœ์ž๋“ค์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜์กด์„ฑ

Redis๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ, ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์˜์กด๋„๊ฐ€ ๋‚ฎ๋‹ค.

์ด๋กœ ์ธํ•ด ๊ตฌ์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ฐ„๋‹จํ•˜๋ฉฐ, ๋ณ„๋„์˜ ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ์ œ๊ณตํ•œ๋‹ค.

 

๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํด๋Ÿฌ์Šคํ„ฐ

Redis๋Š” ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ (Replication)๊ณผ ํด๋Ÿฌ์Šคํ„ฐ (Cluster) ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ™•์žฅ์„ฑ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ด๋•Œ, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ๋กœ ๋ณต์ œํ•ด์„œ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ฐ์ดํ„ฐ ์†์‹ค ์œ„ํ—˜์„ ์ค„์ด๊ณ , ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๊ณ ,

ํด๋Ÿฌ์Šคํ„ฐ๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐ ์ €์žฅํ•ด์„œ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

(์ €๋„ ์ž˜ ๋ชจ๋ฅด๋Š” ๊ฐœ๋…์ด๋ผ ๋‹ค๋ฅธ ๊ฒŒ์‹œ๋ฌผ๋กœ ์ž์„ธํžˆ ์ •๋ฆฌํ•ด์„œ ์—…๋กœ๋“œํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ใ… ใ…กใ… )

 

ํด๋ผ์ด์–ธํŠธ / ์„œ๋ฒ„ ๋ชจ๋ธ

Redis๋Š” ํด๋ผ์ด์–ธํŠธ / ์„œ๋ฒ„ ๋ชจ๋ธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์š”์ฒญ / ์‘๋‹ต ๋ฐฉ์‹์˜ ํ†ต์‹ ์„ ์ง€์›ํ•œ๋‹ค.

์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ Redis ์„œ๋ฒ„์— ๋ช…๋ น์–ด๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ์ˆœํ•˜๊ณ  ํšจ์œจ์ ์ธ ํ†ต์‹  ๋ชจ๋ธ์€ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ์ œ๊ณตํ•œ๋‹ค.

 

๋ฃจ์•„(Lua)๋ฅผ ํ†ตํ•œ ์œ ์—ฐํ•œ ์ฒ˜๋ฆฌ

Redis๋Š” Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์›ํ•ด์„œ ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ๋„,

ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ์›์ž์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ํ•„์š”ํ•œ ์ž‘์—…์„ Lua ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•˜๋ฉด,

์„œ๋ฒ„ ์ธก์—์„œ ์ด๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

์ด๋กœ ์ธํ•ด ๋„คํŠธ์›Œํฌ ์™•๋ณต ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ , ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋”๋ถˆ์–ด ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๋˜ํ•œ, Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋†’์€ ์ž์œ ๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉฐ,

Redis์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(String, List, Set ๋“ฑ)์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์ฐฝ์˜์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ณต์žกํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ฑฐ๋‚˜, ํŠน์ • ํŒจํ„ด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์š”์ฒญ ์ด๋ฒคํŠธ ์ฃผ๋„ ์ฒ˜๋ฆฌ

Redis๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๊ณ ์„ฑ๋Šฅ ์ด๋ฒคํŠธ ์ฃผ๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŽ์€ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋•Œ, ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์ด๋ž€ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋“  ์ž‘์—… (์š”์ฒญ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ / ์“ฐ๊ธฐ ๋“ฑ)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•˜๊ณ ,

์ด๋ฒคํŠธ ๋ฃจํ”„๋ž€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.

 

๋˜ํ•œ, ์ด๋Ÿฌํ•œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋Š” ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•˜์ง€๋งŒ, CPU ์ง‘์•ฝ์ ์ธ ์ž‘์—…์—์„œ๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

Redis๋ฅผ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋กœ ์‹คํ–‰ํ•˜๋Š” ๋“ฑ ์ ์ ˆํžˆ ๋ถ„์‚ฐ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜์†์„ฑ

Redis๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ์˜์†์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ฒ„ ์žฅ์•  ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก RDB์™€ AOF๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด๋•Œ, RDB๋ž€ Redis Database Backup์˜ ์•ฝ์ž๋กœ,

ํŠน์ • ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์Šค๋ƒ…์ƒท ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋ฉฐ, ์„ค์ •๋œ ์ฃผ๊ธฐ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋น ๋ฅธ ์„œ๋ฒ„ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ,

๋งˆ์ง€๋ง‰ ๋ฐฑ์—… ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋Š” ์œ ์‹ค๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๋˜ํ•œ, AOF๋ž€ Append only File์˜ ์•ฝ์ž๋กœ,

๋ชจ๋“  ์“ฐ๊ธฐ ์ž‘์—…์„ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋” ์ •๊ตํ•œ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , RDB๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ,

๋กœ๊ทธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ๊ณ , ์„ฑ๋Šฅ์— ๋” ๋งŽ์€ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

ํŠน์ง• RDB AOF
์†๋„ ๋” ๋น ๋ฆ„ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ ํŠน์ • ์‹œ์ ๊นŒ์ง€ ๋ณต๊ตฌ ๊ฐ€๋Šฅ ๊ฑฐ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ
๋ณต๊ตฌ ๊ฐ€๋Šฅ
๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ ๋งˆ์ง€๋ง‰ ๋ฐฑ์—… ์ดํ›„
๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ
์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ ๋งค์šฐ ๋‚ฎ์Œ
ํŒŒ์ผ ํฌ๊ธฐ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์Œ ์ƒ๋Œ€์ ์œผ๋กœ ํผ

 

 

 

 

๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

Redis๋Š” ๋‹ค์•ผํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋˜๋Š”๋ฐ, ์ฃผ์š” ์‚ฌ๋ก€๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

์บ์‹ฑ - ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ

์ฑ„ํŒ…, ๋ฉ”์‹œ์ง• ๋ฐ ๋Œ€๊ธฐ์—ด - ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์„œ๋น„์Šค

๋žญํ‚น ๋ณด๋“œ (์ˆœ์œ„ํ‘œ) - Sorted Set์„ ํ™œ์šฉํ•œ ์ˆœ์œ„ ๊ด€๋ฆฌ

์ธ์ฆ ํ† ํฐ ์ €์žฅ (์„ธ์…˜ ์Šคํ† ์–ด) - ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ

๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ - ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

์‹ค์‹œ๊ฐ„ ๋ถ„์„ - ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„์„

์œ„์น˜ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ - Geo ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ™œ์šฉํ•œ ์œ„์น˜ ์ •๋ณด ์ฒ˜๋ฆฌ

 

 

 

 

๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€

RDBMS์™€ Redis

RDBMS(Relational Database Management System)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋กœ ์ €์žฅํ•˜๊ณ , ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋ฉฐ, SQL์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์ „ํ†ต์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

๋””์Šคํฌ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์˜ ์˜๊ตฌ ์ €์žฅ๊ณผ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์ž‘์—…์— ์ ํ•ฉํ•˜๊ณ ,

ACID๋ฅผ ์™„๋ฒฝํžˆ ์ง€์›ํ•˜๊ธฐ์— ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๊ธˆ์œต, ERP, CRM ๋“ฑ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋ฐ˜๋ฉด, Redis๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋ฉฐ Key-Value ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์„ค๊ณ„ ๋•๋ถ„์— ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ณ , ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋‚˜ ์บ์‹ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์— ์ ํ•ฉํ•˜๋ฉฐ,

๊ธฐ๋ณธ์ ์œผ๋กœ ํœ˜๋ฐœ์„ฑ์ด์ง€๋งŒ, RDB์™€ AOF ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์˜์†์„ฑ์„ ์ง€์›ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ Redis๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ฑ„ํŒ… ์‹œ์Šคํ…œ, ์„ธ์…˜ ๊ด€๋ฆฌ ๋“ฑ ๊ณ ์† ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์šฉ๋„์— ๋”ฐ๋ผ ์ƒํ˜ธ ๋ณด์™„์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

๋ณต์žกํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์—๋Š” RDBMS๊ฐ€, ๋น ๋ฅด๊ณ  ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์—๋Š” Redis๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.

 

(์œ„์—์„œ RDBMS์™€ NoSQL์„ ๋น„๊ตํ•œ ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ‘๐Ÿป)

 

Memcached์™€ Redis

Memcached๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋ฉฐ Key-Value ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์บ์‹ฑ ๋„๊ตฌ์ด๋‹ค.

๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๋Š” ๋ฐ ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์œผ๋ฉฐ, ์˜๊ตฌ ์ €์žฅ ๊ธฐ๋Šฅ์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

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

Memcached๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ ์บ์‹ฑ, API ์‘๋‹ต ์†๋„ ํ–ฅ์ƒ ๋“ฑ ๊ฐ„๋‹จํ•œ ์ž‘์—…์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

Redis๋Š” Memcached์™€ ๋น„์Šทํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ,

String, List, Hash, Set, Sorted Set ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•œ๋‹ค.

์ด๋กœ ์ธํ•ด Memcached๋ณด๋‹ค ํ›จ์”ฌ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, RDB์™€ AOF๋ฅผ ํ†ตํ•ด ์˜์†์„ฑ๋„ ์ œ๊ณตํ•œ๋‹ค.

๋˜ํ•œ, Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณต์žกํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋ณต์ œ๋ฅผ ํ†ตํ•ด ํ™•์žฅ์„ฑ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ง€์›ํ•˜๊ธฐ์—

์บ์‹ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ๋žญํ‚น ์‹œ์Šคํ…œ, ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

Memcached์™€ Redis์˜ ์„ ํƒ์€ ์ž‘์—…์˜ ๋ณต์žก์„ฑ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ,

๋‹จ์ˆœ ์บ์‹ฑ ๋ชฉ์ ์ด๋ผ๋ฉด Memcached๊ฐ€ ์ ํ•ฉํ•˜์ง€๋งŒ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์˜์†์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Redis๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ด๋‹ค.

Redis๋Š” ๋‹ค์žฌ๋‹ค๋Šฅํ•˜๋ฉฐ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ๋” ๋งŽ์€ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์„ ํ˜ธ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

ํ•ญ๋ชฉ Memcached Redis
๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ
๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ง€์› ๋‹จ์ผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋งŒ ์ง€์›
(Key-Value)
๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ง€์›
(String, List, Hash ๋“ฑ)
์˜๊ตฌ ์ €์žฅ ๊ธฐ๋Šฅ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ RDB์™€ AOF๋ฅผ ํ†ตํ•ด
์˜์†์„ฑ์„ ์ œ๊ณตํ•จ
์Šคํฌ๋ฆฝํŒ… ์ง€์› ์ง€์›ํ•˜์ง€ ์•Š์Œ Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์›ํ•ด์„œ
๋ณต์žกํ•œ ์ž‘์—…์„
์›์ž์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•จ
๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ ์บ์‹ฑ,
API ์‘๋‹ต ์†๋„ ํ–ฅ์ƒ
์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ์บ์‹ฑ,
์ˆœ์œ„ ๊ด€๋ฆฌ, ์„ธ์…˜ ๊ด€๋ฆฌ ๋“ฑ
์„ ํƒ ๊ธฐ์ค€ ๋‹จ์ˆœ ์บ์‹ฑ ๋ชฉ์ ์— ์ ํ•ฉํ•จ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€
์˜์†์„ฑ, ํ™•์žฅ์„ฑ์ด
ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•จ

 

 

 

 

๊ฒฐ๋ก 

Redis๋Š” ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

ํŠนํžˆ, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋‚˜ ์บ์‹ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์—์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋ฉฐ,

RDBMS์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์„œ๋กœ์˜ ๊ฐ•์ ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ Redis๊ฐ€ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ตœ์ ์˜ ์„ ํƒ์€ ์•„๋‹ˆ๋‹ค.

๋ณต์žกํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋‚˜ ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” RDBMS๊ฐ€ ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

๋‹จ์ˆœํ•œ ์บ์‹ฑ ์ž‘์—…์—๋Š” Memcached๊ฐ€ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒฐ๊ตญ, Redis๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠน์ •ํ•œ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋”ฐ๋ผ ์„ ํƒ๋˜์–ด์•ผ ํ•œ๋‹ค.

Redis์˜ ์žฅ์ ๊ณผ ๊ธฐ๋Šฅ์„ ์ž˜ ์ดํ•ดํ•˜๊ณ , ์ ์ ˆํ•œ ํ™œ์šฉ ๋ฐฉ์•ˆ์„ ๊ณ ๋ฏผํ•œ๋‹ค๋ฉด,

ํšจ์œจ์ ์ด๊ณ  ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์„ฑ๊ณต์— ํ•œ ๊ฑธ์Œ ๋” ๊ฐ€๊นŒ์›Œ์งˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด ๊ธ€์ด ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋์œผ๋ฉด ์ข‹๊ฒ ๊ณ , ๊ฐ™์ด ํŒŒ์ดํŒ… ํ•ฉ์‹œ๋‹ค ๐Ÿ’ช๐Ÿป๐Ÿ€

๋ฐ˜์‘ํ˜•