๐ค Redis ๋?
Redis ๋ ์คํ ์์ค ๊ธฐ๋ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ, ์ฃผ๋ก ์บ์ฑ, ์ธ์ ๊ด๋ฆฌ, ๋ฉ์์ง ๋ธ๋ก์ปค ๋ฑ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋งํฉ๋๋ค. ๊ธฐ์กด์ ๋์คํฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌ๋ฆฌ, ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ๋น ๋ฅธ ์๋๋ก ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋๋ค.
์ ํต์ ์ธ ๋์คํฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ๋ ๋์คํฌ I/O ์์ ์ด ํ์ํ๋ฉฐ, ์ด๋ ์๋์ ์ผ๋ก ๋๋ฆฐ ์์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ์ฅํ์ฌ ๋์คํฌ I/O ์์ ์ด ์๋ต๋๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅธ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐ์์ฑ์ ํฅ์์ํค๋๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ๋จํ ๋งํด, Redis ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฝ๊ณ ์ธ ์ ์๋ ๋น๊ต์ ๊ฐ๋ฒผ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๐ก Redis ์ฃผ์ ํน์ง
Redis ๋ ์ธ๊ธฐ ์๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ค์ํ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
1. ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ
Redis๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ด๋ก ์ธํด ๋งค์ฐ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ก์ธ์ค ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ์ ์ฅ๋๋ ๋์คํฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค ์์ญ๋ฐฐ์์ ์์ฒ๋ฐฐ๊น์ง ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ๋ณด์ฌ์ค๋๋ค.
2. ๋ค์ํ ์๋ฃ๊ตฌ์กฐ ์ง์
Redis๋ ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์ํฉ๋๋ค. ์ฃผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก๋ ๋ฌธ์์ด(String), ๋ฆฌ์คํธ(List), ํด์(Hash), ์ (Set) ๋ฑ์ด ์์ต๋๋ค. ๊ฐ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ํน์ ํ ์ฉ๋์ ๋ง๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
3. ์์์ฑ ์ง์
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ Redis๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฏ๋ก ์์คํ ์ฌ์์์ด๋ ์ค๋ฅ๋ก ์ธํ ๋ฐ์ดํฐ ์ ์ค์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Redis๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์์์ ์ผ๋ก ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฃผ์ ์์์ฑ ์ต์ ์ผ๋ก๋ RDB(Redis Database File)์ AOF(Append-Only File)๊ฐ ์์ต๋๋ค.
- RDB: ์ฃผ๊ธฐ์ ์ผ๋ก Redis ์ ๋ฐ์ดํฐ ์ค๋ ์ท์ ๋์คํฌ์ ์ ์ฅํ๋ ์์์ฑ ๋ฐฉ์
- AOF: Redis ์ ๋ชจ๋ ์ฐ๊ธฐ ์ฐ์ฐ์ ๊ธฐ๋กํ๋ ๋ก๊ทธ ํ์ผ ๋ฐฉ์์ ์์์ฑ ๋ฐฉ์
4. ๋์ ๊ฐ์ฉ์ฑ
Redis๋ ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋ณต์ ๋ฅผ ์ง์ํ์ฌ ๋ฐ์ดํฐ์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ง์คํฐ ๋ ธ๋์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์ผ๋ก ์ฌ๋ ์ด๋ธ ๋ ธ๋์ ๋ณต์ ๋๋ฏ๋ก ๋ง์คํฐ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ์ฌ๋ ์ด๋ธ ๋ ธ๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
5. Pub/Sub ์ง์
Redis๋ Pub/Sub(Publish/Subscribe) ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ ๋ฉ์์ง ๋ธ๋ก์ปค๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ค์ ํน์ ์ฑ๋์ ๋ฉ์์ง๋ฅผ ๋ฐํ(Publish)ํ๊ณ ํด๋น ์ฑ๋์ ๊ตฌ๋ (Subscribe)ํ๋ ๋ฐฉ์์ผ๋ก ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.
6. ํธ๋์ญ์ ์ง์
Redis๋ ๋จ์ผ ์ฐ์ฐ์์ ์ฌ๋ฌ ๋ช ๋ น์ ์์์ ์ผ๋ก ์คํํ ์ ์๋ ํธ๋์ญ์ ์ ์ง์ํฉ๋๋ค. ๋ฉํฐ ๋จ๊ณ ์์ ์ ์์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ๋กค๋ฐฑ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์์ ํ ๋ฐ์ดํฐ ์กฐ์์ด ๊ฐ๋ฅํฉ๋๋ค.