
1. Redis๋ ๋ฌด์์ธ๊ฐ?
Redis๋ "Remote Dictionary Server"์ ์ฝ์๋ก, ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค.
์ฆ, ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ฒ๋ฆฌํ๊ณ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ Key-Value ์ ์ฅ์์ ๋๋ค.
Redis๋ ์คํ์์ค์ด๋ฉฐ,
๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฝ๊ณ ์ธ ์ ์๋ ๊ณ ์ฑ๋ฅ์ ํน์ฑ์ ๊ฐ๊ณ ์์ด ์บ์๋ ์ธ์ ๊ด๋ฆฌ, ๋ฉ์์ง ํ ๋ฑ์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํค(Key)์ ๊ฐ(Value) ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์คํ ์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ ์ ์์ง๋ง,
๋๋ถ๋ถ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด ๋น ๋ฅธ ์๋๋ฅผ ์๋ํฉ๋๋ค.
2. Redis์ ํน์ง๊ณผ ์ฅ์
1. ๊ณ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์,
๋น ๋ฅธ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฑ๋ฅ์ ์๋ํฉ๋๋ค.
2. ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง์: Redis๋ ๋จ์ํ ๋ฌธ์์ด๋ฟ๋ง ์๋๋ผ
๋ฆฌ์คํธ, ์ (Set), ํด์(Hash), ์ ๋ ฌ๋ ์ (Sorted Set), ๋นํธ๋งต(Bitmap), ํ์ดํผ๋ก๊ทธ๋ก๊ทธ(HyperLogLog) ๋ฑ์
๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์ํฉ๋๋ค.
3. ์์์ฑ ์ต์ : Redis๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ด์ง๋ง, ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ์ฅํ๊ฑฐ๋,
ํธ๋์ญ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ด ์์์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
4. ์ค์ผ์ผ๋ง ๋ฐ ๋ณต์ : Redis๋ ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋ณต์ , ํด๋ฌ์คํฐ๋ง, ์ค๋ฉ ๋ฑ์ ๊ธฐ๋ฅ์ ํตํด ๋์ ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
5. ๊ฐ๋จํ ์ค์น์ ์ฌ์ฉ: Redis๋ ์ค์น๊ฐ ๊ฐ๋จํ๊ณ , ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค์ํ ์ธ์ด์์ ์ง์๋์ด ์ฌ์ฉ์ด ์ฉ์ดํฉ๋๋ค.
6. ๋ค์ํ ์ฌ์ฉ์ฒ: ์บ์, ์ธ์ ๊ด๋ฆฌ, ๋ฉ์์ง ํ, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ ์ฌ๋ฌ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
3. Redis๊ฐ ์ฌ์ฉ๋๋ ์ํฉ
Redis๋ ๊ณ ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์๊ตฌ๋๋ ์ํฉ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ ์ฃผ์ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ์บ์ ์์คํ
Redis๋ ์บ์ ์์คํ ์ผ๋ก ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๋์
Redis์์ ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์บ์๋ก ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
- ์์: ์ฌ์ฉ์์ ์ธ์ ์ ๋ณด, ์์ฃผ ์กฐํ๋๋ ๋ด์ค, ์ ํ ๋ชฉ๋ก ๋ฑ.
2. ์ธ์ ๊ด๋ฆฌ
Redis๋ ์ธ์ ์ ์ฅ์๋ก๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฒ ๊ฐ ์ธ์ ์ํ๋ฅผ ๊ณต์ ํ๋ ๋ฐ ์ ํฉํ๋ฉฐ,
์ธ์ ๋ง๋ฃ ์๊ฐ์ด๋ TTL(Time-to-Live)์ ์ค์ ํ ์ ์์ด ํจ์จ์ ์ธ ์ธ์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค.
3. ๋ฉ์์ง ํ
Redis๋ ๋ฉ์์ง ํ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
Redis์ List ์๋ฃํ์ ํ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ๊ฑฐ๋, ์ฌ๋ฌ ์๋น์ค ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
4. ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
Redis๋ ์ค์๊ฐ ๋ถ์์ด ํ์ํ ๊ณณ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ค์๊ฐ ์์ํ, ํต๊ณ ์์คํ , ์ค์๊ฐ ์๋ฆผ ์์คํ ๋ฑ์ ํ์ฉ๋ฉ๋๋ค.
5. ๋ฐํ/๊ตฌ๋ (Pub/Sub) ์์คํ
Redis๋ Pub/Sub ๋ชจ๋ธ์ ์ง์ํ์ฌ, ์ค์๊ฐ์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ฐํํ๊ณ ๊ตฌ๋ ํ๋ ์์คํ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ค์๊ฐ ์ฑํ ์์คํ ์ด๋ ์๋ฆผ ์์คํ ์์ ์ ์ฉํฉ๋๋ค.
4. Redis ์ค์น ๋ฐฉ๋ฒ
1. EC2์์ Redis ์ค์น (Linux ํ๊ฒฝ)
์์คํ
์
๋ฐ์ดํธ:
๋จผ์ , ์์คํ
์ ์ต์ ์ํ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
sudo apt-get update
Redis ์ค์น:
Redis๋ ๊ธฐ๋ณธ์ ์ผ๋ก APT ํจํค์ง ๊ด๋ฆฌ์์ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์, ๋ค์ ๋ช
๋ น์ด๋ก ์ค์นํ ์ ์์ต๋๋ค.
sudo apt-get install redis-server -y
Redis ์๋น์ค ์์:
Redis๊ฐ ์ค์น๋ ํ, ์๋น์ค๋ฅผ ์์ํ๊ณ ์๋์ผ๋ก ์์๋๋๋ก ์ค์ ํฉ๋๋ค.
sudo service redis-server start
sudo systemctl enable redis-server
2. Windows์์ Redis ์ค์น (Windows Subsystem for Linux ์ฌ์ฉ)
Windows์์ Redis๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด **WSL(Windows Subsystem for Linux)**์ ์ค์นํด์ผ ํฉ๋๋ค.
- WSL ์ค์น:
Microsoft์ WSL ์ค์น ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ฌ WSL์ ์ค์นํฉ๋๋ค. - Ubuntu ์ค์น:
WSL์ ํตํด Ubuntu๋ฅผ ์ค์นํ ํ, Ubuntu์์ Redis๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
sudo apt-get update
sudo apt-get install redis-server -y
sudo service redis-server start
3. Docker๋ก Redis ์ค์น
Docker๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, Redis์ ๊ณต์ ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํด ์ค์นํ ์ ์์ต๋๋ค.
docker pull redis
docker run --name redis-container -p 6379:6379 -d redis
5. Redis ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
Redis๋ ๋ค์ํ ๋ช ๋ น์ด๋ฅผ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. Redis CLI ์ฌ์ฉ
Redis๋ฅผ ์ค์นํ ํ, Redis CLI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
redis-cli
2. ๊ธฐ๋ณธ ๋ช ๋ น์ด
- ๋ฐ์ดํฐ ์ ์ฅ:
๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ช ๋ น์ด์ ๋๋ค.
SET mykey "Hello, Redis!"
- ๋ฐ์ดํฐ ์กฐํ:
์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค.
GET mykey
- ํค ์ญ์ :
์ ์ฅ๋ ํค๋ฅผ ์ญ์ ํฉ๋๋ค.
DEL mykey
- ๋ค์ํ ์๋ฃํ ์ฌ์ฉ:
Redis๋ ๋ค์ํ ์๋ฃํ์ ์ง์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด:
LPUSH mylist "Item1"
LPUSH mylist "Item2"
# ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๋ฉด:
LRANGE mylist 0 -1
3. ๋ง๋ฃ ์๊ฐ ์ค์ (TTL)
๋ฐ์ดํฐ์ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํ๋ ค๋ฉด EXPIRE ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SET mykey "Temporary data"
EXPIRE mykey 60 # 60์ด ํ ๋ง๋ฃ
6. Redis์ ํ์ฉ ์ฌ๋ก
์น ์ ํ๋ฆฌ์ผ์ด์
์บ์:
์น ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์์ Redis๋ฅผ ์บ์ ์์คํ
์ผ๋ก ํ์ฉํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ Redis์ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ถ๋ด์ ์ค์ ๋๋ค.
์ค์๊ฐ ํต๊ณ ์์คํ
:
Redis๋ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ ๋๋ฌธ์, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์์คํ
์์ ์ ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธ์ ์๋ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ธ์
์ ์ฅ์:
Redis๋ ์ธ์
์ ๋ณด๋ฅผ ์์์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ธ์
๋ฐ์ดํฐ๋ฅผ Redis์ ์ ์ฅํ๊ณ ,
์ด๋ฅผ ๋ถ์ฐ ์๋ฒ์์ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋ฉ์์ง ํ:
Redis์ List ์๋ฃํ์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง ํ ์์คํ
์ ๊ตฌํํ ์ ์์ต๋๋ค.
์์ ์ ํ์ ๋ฃ๊ณ ์ฌ๋ฌ ์์ปค๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
7. ๊ฒฐ๋ก
Redis๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก,
์บ์, ์ธ์ ๊ด๋ฆฌ, ๋ฉ์์ง ํ, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
Redis์ ๋น ๋ฅธ ์ฑ๋ฅ๊ณผ ์ ์ฐํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋๋ถ์
๋ง์ ๊ธฐ์ ๊ณผ ๊ฐ๋ฐ์๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ํ์์ ์ผ๋ก ํ์ฉํ๊ณ ์์ต๋๋ค.
์ค์น ๋ฐฉ๋ฒ๋ ๊ฐ๋จํ๊ณ , ๋ค์ํ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด
๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํตํฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
'๐จ๏ธ Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์๋ฒฝ ๋๋น์ (11) | 2025.07.23 |
|---|---|
| ๋์์ธ ํจํด: ์ ์, ๋ถ๋ฅ ๋ฐ ์ฃผ์ ํจํด ์ดํด (5) | 2025.07.08 |