DB
[DB] Redis๋?
s_ih_yun
2025. 6. 4. 00:56
728x90
1. Redis๋?
๐ก REmote DIctionary Server ๋น ๋ฅธ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์คํ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํน์ง
- Key-Value ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ธฐ๋ฐ
- ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง์ (๋ฌธ์์ด, ๋ฆฌ์คํธ, ํด์, ์งํฉ, ์ ๋ ฌ๋ ์งํฉ ๋ฑ)
- ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ์ ****: ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ํ๋
- ์์์ฑ
- ์ฑ๊ธ ์ค๋ ๋๋ก ๋์
- ๋ช
๋ น์ด๋ฅผ ์ด๋ฒคํธ ๋ฃจํ(Event Loop) ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ
- ๋ช ๋ น์ด๋ฅผ Event Queue์ ์ ์ฌํ๊ณ ์ฑ๊ธ ์ค๋ ๋๋ก ํ๋์ฉ ์ฒ๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๊ธ ์ค๋ ๋๋ก๋ ๋น ๋ฅธ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๋ฉํฐ ์ค๋ ๋์ ๋์์ฑ ๋ฌธ์ ํผํ๊ธฐ ๊ฐ๋ฅ : Context Switch, Deadlock ๋ฐ์ X
- ๋ช
๋ น์ด๋ฅผ ์ด๋ฒคํธ ๋ฃจํ(Event Loop) ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ
- ์ฌ๋ฌ ๋์ ์๋ฒ ๊ตฌ์ฑ ๊ฐ๋ฅ (Master - Slave)
- Key-Value ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ธฐ๋ฐ
- ๋จ์
- ๋ฐ์ดํฐ ์์์ฑ
- ๋ณต์กํ ์ฟผ๋ฆฌ ์ง์ ๋ถ์กฑ
- ๋ฐ์ดํฐ ์ฌ์ด์ฆ ์ ํ
- ํ์ ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ์ค์ผ์ผ ์์์ ์ด๋ ค์
- ํธ๋์ ์ ์ ์ ํ
1.1. Key - Value ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ํค (Key) : ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ์ญํ
- ๋ฌธ์์ด ํํ
- ๊ฐ (Value) : ํค์ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ ๊ฐ ์๋ฏธ
- ๋ฌธ์์ด, ๋ฆฌ์คํธ, ํด์, ์งํฉ, ์ ๋ ฌ๋ ์งํฉ ๋ฑ์ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ง์
1.2. ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ์
- ์ฃผ ๋ฉ๋ชจ๋ฆฌ(RAM) ๋ด ๋ฐ์ดํฐ ์ ์ฅ → ๋น ๋ฅธ ์๋ต ์๋
- ๋์คํฌ I/O ์ค๋ฒํค๋ ์๊ธฐ ๋๋ฌธ
- ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝ ๆ
- ์ฃผ๋ก ๋ณด์กฐ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ฌ์ฉ
1.3. NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Not only SQL; ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ(Relation)๋ฅผ ์ ์ํ์ง ์๋๋ค
- ๋๋์ ๋ถ์ฐ๋ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ / ์กฐํํ๋๋ฐ ํนํ๋ DB
- ์คํค๋ง ์์ด ์ฌ์ฉํ๊ฑฐ๋ ๋์จํ ์คํค๋ง ์ ๊ณต
- ์คํค๋ง์ ์ฝ๋งค์ด์ง ์๊ณ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ ํฉ
- ์ฃผ๋ก ๋น ํ ์ดํฐ, ๋ถ์ฐ ์์คํ ํ๊ฒฝ์์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉ
- ์คํค๋ง ์์ด ์ฌ์ฉํ๊ฑฐ๋ ๋์จํ ์คํค๋ง ์ ๊ณต
- ์ฅ์
- RDBMS์ ๋นํด ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๋ถ์ฐ์ฒ๋ฆฌ, ๋ณ๋ ฌ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๋น์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค๊ณ → ์ค๊ณ ๋น์ฉ ๊ฐ์
- Big Data ์ฒ๋ฆฌ์ ํจ๊ณผ์
- ๊ฐ๋ณ์ ์ธ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ์ฐํ ๋ณํ ๊ฐ๋ฅ
- ๋จ์
- ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ ์ค ์ฅ์ ๋ฐ์ ์, ๋ฐ์ดํฐ ์์ค ๋ฐ์ ๊ฐ๋ฅ
- ์ธ๋ฑ์ค ๊ตฌ์กฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ → ๋ง์ ์ธ๋ฑ์ค ์ฌ์ฉ์ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ ํ์
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ ํญ์ ๋ณด์ฅ X
1.4. ์์์ฑ : ๋ฐ์ดํฐ ๋ฐฑ์
- ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ ์ ์ฅ → ์์คํ
์ข
๋ฃ / ์ฌ์์ / ์ฅ์ ๋ฐ์ ์ ๋ฐ์ดํฐ๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ณด์กด โ
- ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ์ฅ ํ์
- ๋ฐฑ์
์ ์ํด Redis์์ ์ ๊ณตํ๋ ์ต์
- RDB (Redis DataBase) ์ค๋
์ท
- ์ฃผ๊ธฐ์ ์ผ๋ก Redis DB์ ํ์ฌ ์ํ๋ฅผ ์ค๋ ์ท ํ์ผ๋ก ๋์คํฌ์ ์ ์ฅ
- ํ์ ์ ๋ฐ์ดํฐ ๋ณต๊ตฌ์ ์ฌ์ฉ
- AOF (Append Only File) ๋ก๊ทธ
- ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก
- Redis ์๋ฒ ์ฌ์์ ์ ๋ก๊ทธ๋ฅผ ์ฌ์คํํ์ฌ ๋ฐ์ดํฐ ๋ณต๊ตฌ
- RDB (Redis DataBase) ์ค๋
์ท
2. ํ์ฉ ์ฌ๋ก
- ์ฃผ๋ก ์บ์ฑ, ์ธ์
๊ด๋ฆฌ, ๋ฉ์์ง ๋ธ๋ก์ปค, ๋๊ธฐ์ด ์ฒ๋ฆฌ ๋ฑ ์ฉ๋๋ก ํ์ฉ
- ์บ์ฑ(Cashing) : ์์ ๋น๋ฐ๋ฒํธ(One-Time PW), ๋ก๊ทธ์ธ ์ธ์
(Session), JWT(JSON Web Token), ์ผ์ ์ฃผ๊ธฐ๋ก ๊ฐฑ์ ํด๋ ๊ด์ฐฎ์ ๋ฐ์ดํฐ, ๋์ผ ์ฐ์ฐ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ
- DB ์ฟผ๋ฆฌ๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ์ฌ DB ๋ถํ ์ค์ด๊ณ ๋น ๋ฅธ ์๋ต ๊ฐ๋ฅํ๊ฒ ํจ
- ์ธ์
์ ์ฅ์
- ์ธ์ ํด๋ฌ์คํ๋ง, ๋ถํ ๋ถ์ฐ ์ง์
- ํ(Queue) : ์ฐ์ ์์ ํ, ์ด๋ฉ์ผ ์ ์ก
- ์ค์๊ฐ ๋ถ์ : ์์(Rank), ์ค์๊ฐ ์ด๋ฒคํธ ๋ก๊ทธ ์ฒ๋ฆฌ, ์กฐํ์ ๊ณ์ฐ
- Pub / Sub ํจํด : ์ค์๊ฐ ์ฑํ , ์ด๋ฒคํธ ๋ฉ์์ง ์ฒ๋ฆฌ
- ์บ์ฑ(Cashing) : ์์ ๋น๋ฐ๋ฒํธ(One-Time PW), ๋ก๊ทธ์ธ ์ธ์
(Session), JWT(JSON Web Token), ์ผ์ ์ฃผ๊ธฐ๋ก ๊ฐฑ์ ํด๋ ๊ด์ฐฎ์ ๋ฐ์ดํฐ, ๋์ผ ์ฐ์ฐ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ
- ์ฃผ๋ก RDBMS ๋ฑ๊ณผ ํจ๊ป ์กฐํฉํ์ฌ ์ฌ์ฉ
- ๋ํ์ ์ธ ์์) ์น์๋น์ค์์ MySQL(๋ง์คํฐ DB) + Redis(Cache) ๊ตฌ์ฑ
๐ References
https://pinggoopark.tistory.com/797
https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8841492839
728x90