์ต๊ทผ Redis๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์์ ์ฌ์ฉ์ค์ธ ์ฉ๋ ์ ์ฅ ๊ด๋ จ์ ์ค๊ณํ๋ฉด์ "Redis๋ ์ ์ฑ๊ธ ์ค๋ ๋๋ก ๋์ํ ๊น?"๋ผ๋ ๊ถ๊ธ์ฆ์ด ์๊ฒผ์ต๋๋ค. Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ๋ช ํ์ง๋ง, ์ค๊ณ ์ฒ ํ๊ณผ ๋ด๋ถ ๊ตฌ์กฐ๋ ๋ง์ ๊ฐ๋ฐ์๋ค์๊ฒ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. ์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ Redis๊ฐ ์ฑ๊ธ ์ค๋ ๋๋ก ์ค๊ณ๋ ์ด์ ์, Redis 6.0์์ ์ถ๊ฐ๋ ๋ฉํฐ์ค๋ ๋ ๊ธฐ๋ฅ์ ๋ํด ์์๋ณธ๊ฒ์ ์ ๋ฆฌํด๋ณด๋ คํฉ๋๋ค.
Redis๋ ๋จ์ผ ์ค๋ ๋(single-threaded) ๋ชจ๋ธ๋ก ๋์ํฉ๋๋ค. ์ด๋ ๋ช ๊ฐ์ง ์ด์ ๋ก ์ค๊ณ๋์์ต๋๋ค:
๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์๋ ๋์์ฑ ๋ฌธ์ (์: ๋ ์ด์ค ์ปจ๋์ , ๋ฐ๋๋ฝ ๋ฑ)๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณต์กํ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค. ํ์ง๋ง ๋จ์ผ ์ค๋ ๋ ๋ชจ๋ธ์์๋ ์ด๋ฌํ ๋ณต์ก์ฑ์ ํผํ ์ ์์ด ์ค๊ณ๊ฐ ๋จ์ํด์ง๊ณ , ์ฑ๋ฅ ์ต์ ํ๋ ์ฉ์ดํด์ง๋๋ค.
๋ชจ๋ ๋ช ๋ น์ด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์, ๋ณต์กํ ๋ฝ(lock) ๋ฉ์ปค๋์ฆ ์์ด๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์์ฐ์ค๋ฝ๊ฒ ์ ์งํ ์ ์์ต๋๋ค.
๋จ์ผ ์ค๋ ๋ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ค๋ ๋ ๊ฐ ์ ํ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ์ฌ ๋น ๋ฅธ ์๋ต ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
Redis๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ(event-driven) ์ํคํ ์ฒ๋ฅผ ์ฑํํ์ฌ ๋คํธ์ํฌ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋จ์ผ ์ค๋ ๋ ์ด๋ฒคํธ ๋ฃจํ๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ด ๋์ ๋์์ฑ์ ๊ตฌํํฉ๋๋ค.
Redis 6.0๋ถํฐ๋ ๋คํธ์ํฌ I/O ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฉํฐ์ค๋ ๋ ์ง์์ด ๋์ ๋์์ต๋๋ค. ํ์ง๋ง ๋ช ๋ น ์คํ ๋ถ๋ถ์ ์ฌ์ ํ ์ฑ๊ธ ์ค๋ ๋๋ก ์ ์ง๋ฉ๋๋ค.
redis.conf
ํ์ผ์์ ๋ฉํฐ์ค๋ ๋๋ฅผ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
# redis.conf ์ค์ ์์
# I/O ์ค๋ ๋ ๊ฐ์ ์ค์ (0์ผ๋ก ์ค์ ํ๋ฉด ๋ฉํฐ์ค๋ ๋ฉ ๋นํ์ฑํ)
io-threads 4
# I/O ์ค๋ ๋ฉ ํ์ฑํ ์ฌ๋ถ
io-threads-do-reads yes
Redis๊ฐ ๋จ์ผ ์ค๋ ๋๋ก ์ค๊ณ๋ ์ด์ ๋ ์ฑ๋ฅ ์ต์ ํ, ์ค๊ณ์ ๋จ์ํ, ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง ๋ฑ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. Redis 6.0๋ถํฐ๋ ๋คํธ์ํฌ I/O์ ํํด ๋ฉํฐ์ค๋ ๋ ์ง์์ด ์ถ๊ฐ๋์ด ์ฑ๋ฅ์ด ๋์ฑ ํฅ์๋์์ต๋๋ค. ์ด๋ฌํ ์ค๊ณ ์ ํ์ Redis๋ฅผ ๋น ๋ฅด๊ณ ์ ๋ขฐํ ์ ์๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ง๋ค์ด์ฃผ์์ต๋๋ค.
Redis๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋จ์ผ ์ค๋ ๋์ ๋ฉํฐ์ค๋ ๋์ ํน์ฑ์ ์ดํดํ๊ณ , ํ๋ก์ ํธ์ ๋ง๊ฒ ์ต์ ํํ์ฌ ํ์ฉํด๋ณด์ธ์! ๐