๐ ์ด๋ณด์๋ ํ๋์ ์ดํดํ๋ Redis ํต์ฌ ์์ฝ ๋ ธํธ
Redis(๋ ๋์ค)๋ ๋ฌด์์ผ๊น์? ์ด๋ ต๊ฒ ์๊ฐํ ํ์ ์์ด, ์ปดํจํฐ ์ธ์์ **'์ด๊ณ ์ ์์ ๋ฉ๋ชจ์ฅ'**์ด๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ์ผ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)๊ฐ ํฌ๊ณ ๋ฌด๊ฑฐ์ด '์ฒ ์ ์๋ฅํจ'์ด๋ผ๋ฉด, Redis๋ ์ฑ ์ ์์ ๋๊ณ ๋ฐ๋ก๋ฐ๋ก ์ ๊ณ ์ง์ฐ๋ 'ํฌ์คํธ์'๊ณผ ๊ฐ์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ง์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ ๊ทผ ์๋๊ฐ ์์์ ์ด์ํ๊ฒ ๋น ๋ฆ ๋๋ค.
๐บ๏ธ ํ๋์ ๋ณด๋ Redis ๊ธฐ๋ณธ ๋์ ํ๋ฆ
๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ์ฉ ๋ฐฉ์์ธ ์บ์(Cache) ํจํด์ ํ๋ฆ์ ๋๋ค. DB๋ฅผ ๋งค๋ฒ ๋ค์ง๋ ๋์ , ๋น ๋ฅธ ๋ฉ๋ชจ์ฅ์ธ Redis๋ฅผ ๋จผ์ ํ์ธํ๋ ์๋ฆฌ์ ๋๋ค.
[์ฌ์ฉ์ ์์ฒญ]
โ
โผ
[Redis (ํฌ์คํธ์)] โโ(๋ฐ์ดํฐ ์์! โก)โโ> ๋ฐ๋ก ์๋ต ๋ฐํ (๋น ๋ฆ)
โ
(๋ฐ์ดํฐ ์์ ๐ข)
โ
โผ
[๋ฉ์ธ DB (์๋ฅํจ)] โโ(๋ฐ์ดํฐ ์ฐพ์)โโ> [Redis์ ๋ณต์ฌ] ํ ์๋ต ๋ฐํ
๐ต 1. ๊ธฐ์ด โ Redis๊ฐ ์ ๋ ๋น ๋ฅธ ์ด์
"์ ๋ค๋ค Redis๊ฐ ๋น ๋ฅด๋ค๊ณ ๊ทน์ฐฌํ ๊น์?" ๊ทธ ๋น๋ฐ์ ์ ์ฅ ์์น์ ์ฒ๋ฆฌ ๋ฐฉ์์ ์์ต๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| ์ธ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ | SSD/HDD๊ฐ ์๋ RAM์ ์ ์ฅ โ ์๋ฐฑ ๋ฐฐ ๋น ๋ฅธ ์ ๊ทผ ์๋ ๋ณด์ฅ |
| ์ฑ๊ธ ์ค๋ ๋ | ์์ฒญ์ ํ ์ค๋ก ์ธ์ ์์๋๋ก ์ฒ๋ฆฌ โ ๋ฐ์ดํฐ ๊ผฌ์(Race condition) ์์ฒ ์ฐจ๋จ |
๐ข 2. ์์์ฑ โ ์ ์์ด ๊บผ์ ธ๋ ๋ฐ์ดํฐ๋ฅผ ์งํค๋ ๋ฒ
"๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅํ๋ฉด ์ปดํจํฐ๊ฐ ๊บผ์ก์ ๋ ๋ค ๋ ์๊ฐ๋ ๊ฑฐ ์๋์ผ?" ๋ง์ต๋๋ค. ๊ทธ๋์ Redis๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋์คํฌ์ ๋ฐฑ์ ํ๋ ๋ ๊ฐ์ง ๋ฌด๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| RDB (์ค๋ ์ท) | ํน์ ์์ ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ง ์ฐ๋ฏ ๋์คํฌ์ ์ ์ฅ (๋ณต๊ตฌ ๋น ๋ฆ) |
| AOF (๋ก๊ทธ) | ๋ชจ๋ ์ฐ๊ธฐ ๋ช ๋ น์ด๋ฅผ ์ผ๊ธฐ์ฅ์ฒ๋ผ ์ค์๊ฐ์ผ๋ก ๊ธฐ๋ก (๋ฐ์ดํฐ ์์ค ์ต์ํ) |
| ์ค๋ฌด ์ ์ฉ | ๋ ๋ฐฉ์์ ๋ชจ๋ ์ผ์ ์๋ก์ ๋จ์ ์ ๋ณด์ํ๋ฉฐ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ |
๐ 3. ์บ์ โ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์์ ์ ์ฅ ์ ๋ต
Redis๋ฅผ ์บ์๋ก ์ธ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ธ์ ์ง์ฐ๊ณ ์ธ์ ์ฑ์ธ์ง๊ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| Cache-aside | Redis๋ถํฐ ํ์ธ โ ์์ผ๋ฉด DB ์กฐํ ํ Redis์ ์ ์ฅํ๋ ๊ธฐ๋ณธ ํจํด |
| Cache Invalidation | DB ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ Redis ์บ์๋ฅผ ์์ ์ญ์ (๋ฎ์ด์ฐ๊ธฐ๋ ์ค๋ฅ ์ํ์ด ํผ) |
| Eviction Policy | ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฝ ์ฐผ์ ๋์ ์ญ์ ์ ๋ต (์: ๊ฐ์ฅ ์ค๋๋ ๊ฒ ์ญ์ vs ๊ฐ์ฅ ์ ๊ฒ ์ด ๊ฒ ์ญ์ ) |
๐ด 4. ์๋ฃ๊ตฌ์กฐ โ ์ํฉ๋ณ ๋ง์ถค ๋๊ตฌ 5๊ฐ์ง
Redis๋ ๋จ์ํ ๋ฉ๋ชจ์ฅ์ด ์๋๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋ค์ํ ํํ์ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
| ์๋ฃ๊ตฌ์กฐ | ์ค๋ช |
|---|---|
| String | ๋จ์ key-value ๊ตฌ์กฐ. ๊ธฐ๋ณธ์ ์ธ ์บ์ฑ์ด๋ ์กฐํ์ ์นด์ดํฐ์ ์ ํฉ |
| Hash | ํ๋-๊ฐ ๋ฌถ์. ์ ์ ํ๋กํ์ฒ๋ผ ํ ๋์์ ์์ฑ์ด ์ฌ๋ฌ ๊ฐ์ผ ๋ ์ ์ฉ |
| List | ์์ ์๋ ๋ชฉ๋ก. ์ฑํ ๋ด์ญ, ์๋ฆผ, ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ฉ์์ง ํ์ ์ฌ์ฉ |
| Set | ์ค๋ณต ์๋ ์งํฉ. '์ข์์' ์ค๋ณต ๋ฐฉ์ง, ๊ต์งํฉ/ํฉ์งํฉ ์ฐ์ฐ์ ํ์ |
| Sorted Set | ์ ์ ๊ธฐ๋ฐ ์๋ ์ ๋ ฌ. ์ค์๊ฐ ๊ฒ์ ๋ญํน์ด๋ ์ธ๊ธฐ ๊ฒ์์ด ๊ตฌํ์ ๊ฝ |
๐ฃ 5. ๋ฉ์์ง โ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๋ฌํ๋ ๋ฐฉ์
Redis๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ ์ธ์๋, A์์ B๋ก ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ด์ฃผ๋ ์ฐ์ฒด๋ถ ์ญํ ๋ ์์ฃผ ์ํฉ๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| ๋ฉ์์ง ํ (List) | ์์ ์ ์ค ์ธ์ฐ๊ณ ์ฐจ๋ก๋๋ก ํ๋์ฉ ์ฒ๋ฆฌ (์์ ์๊ฐ 1๋ช ) |
| Pub/Sub | ๋ผ๋์ค ๋ฐฉ์ก์ฒ๋ผ ๋ฐํํ๋ฉด ๊ตฌ๋ ์ ์ ์ฒด์๊ฒ ๋์ ์ ๋ฌ (์ค์๊ฐ ๋ธ๋ก๋์บ์คํธ) |
๐ก 6. ๊ณ ๊ฐ์ฉ์ฑ โ ์๋ฒ๊ฐ ์ ๋ ์ฃฝ์ง ์๊ฒ ๋ง๋๋ ๋ฒ
์๋น์ค๊ฐ ์ปค์ง๋ฉด Redis ์๋ฒ ํ ๋๋ก๋ ๋ถ์ํฉ๋๋ค. ์๋ฒ๊ฐ ๊ณ ์ฅ ๋๋ ์๋น์ค๊ฐ ๋ฉ์ถ์ง ์๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| Sentinel | ๋ณ๋ ๊ฐ์์๊ฐ ์ฅ์ ๋ฅผ ๊ฐ์งํ๋ฉด ๋ณด์กฐ(Slave)๋ฅผ ๋ฉ์ธ(Master)์ผ๋ก ์๋ ์น๊ฒฉ (์ค์๊ท๋ชจ์ฉ) |
| Cluster | ์๋ฒ๋ผ๋ฆฌ ์๋ก ๊ฐ์ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ชผ๊ฐ์ ๋ถ์ฐ ์ ์ฅ. ๋ฌดํ ํ์ฅ ๊ฐ๋ฅ (๋๊ท๋ชจ์ฉ) |
โช 7. ์ฌํ ๊ฐ๋ โ ํ ๋จ๊ณ ๋ ๋์๊ฐ๊ธฐ
๊ธฐ๋ณธ๊ธฐ๋ฅผ ์ตํ๋ค๋ฉด, ์ค๋ฌด์์ ๋ง์ฃผ์น ์ ์๋ ์กฐ๊ธ ๋ ๋ณต์กํ ์ ์ด ๊ธฐ์ ๋ค๋ ์์๋๋ฉด ์ข์ต๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| ๋ถ์ฐ ๋ฝ (Redlock) | ์ฌ๋ฌ ์๋ฒ ํ๊ฒฝ์์ ๋์ ๋ค๋ฐ์ ์ธ ์ ๊ทผ์ด ๊ผฌ์ด์ง ์๊ฒ ์๋ฌผ์ ๋ก ์ ์ด |
| Transaction | ์ฌ๋ฌ ๋ช ๋ น์ด๋ฅผ ๋ฌถ์ด์ ํ ๋ฒ์ ์คํ (๋จ, ์ผ๋ฐ DB์ ๋ฌ๋ฆฌ ์คํจ ์ ๋กค๋ฐฑ์ ์์) |
| Lua ์คํฌ๋ฆฝํธ | ์กฐ๊ฑด ๋ถ๊ธฐ๊ฐ ํฌํจ๋ ๋ณต์กํ ๋ก์ง์ Redis ์๋ฒ ๋ด๋ถ์์ ์ง์ ๊ณ ์์ผ๋ก ์คํ |