๋ชฉ์ฐจ (OPEN)
- Redis ๊ธฐ๋ณธ ๊ฐ๋
- Redis์ ํน์ง
- ์ฑ๋ฅ
- ์ ์ฐํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ๊ฐ๋ฐ ์ฉ์ด์ฑ
- ์์กด์ฑ
- ๋ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํด๋ฌ์คํฐ
- ํด๋ผ์ด์ธํธ / ์๋ฒ ๋ชจ๋ธ
- ๋ฃจ์(Lua)๋ฅผ ํตํ ์ ์ฐํ
- ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ ์์ฒญ ์ด๋ฒคํธ ์ฃผ๋ ์ฒ๋ฆฌ
- ์์์ฑ
- ๋ํ์ ์ธ ์ฌ์ฉ ์ฌ๋ก
- ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ
- ๊ฒฐ๋ก

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์ ์ฅ์ ๊ณผ ๊ธฐ๋ฅ์ ์ ์ดํดํ๊ณ , ์ ์ ํ ํ์ฉ ๋ฐฉ์์ ๊ณ ๋ฏผํ๋ค๋ฉด,
ํจ์จ์ ์ด๊ณ ์ ์ฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๋ฅผ ํตํด ํ๋ก์ ํธ ์ฑ๊ณต์ ํ ๊ฑธ์ ๋ ๊ฐ๊น์์ง ์ ์์ ๊ฒ์ด๋ค.
์ด ๊ธ์ด ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์ผ๋ฉด ์ข๊ฒ ๊ณ , ๊ฐ์ด ํ์ดํ ํฉ์๋ค ๐ช๐ป๐
'๐ป๊ณต๋ถ ๊ธฐ๋ก > ๐ Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Backend] Listํ ๋ช ๋ น์ด (0) | 2025.01.12 |
|---|---|
| [Backend] Stringํ ๋ช ๋ น์ด (0) | 2025.01.12 |
| [Backend] Redis ๊ธฐ๋ณธ ์๋ฃํ - String, List, Set, Sorted Set (ZSet), Hash (0) | 2025.01.12 |
| [Backend] Redis ์ค์นํ๊ธฐ (Window) (0) | 2025.01.07 |
| [Backend] REDIS ๊ณต๋ถ ๊ณ๊ธฐ (2) | 2025.01.06 |