2026๋ ! ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ Redis ์ค์ ๊ฐ์ด๋: ๊ธฐ์ด๋ถํฐ ์ค๋ฌด ํจํด๊น์ง
๋ง์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ค์ด Redis๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ค์ ๋ก๋ ๋จ์ ์บ์ ์๋ฒ ์ ๋๋ก๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Redis ์๋ฃํ์ ์์ง๋ง ์ค๋ฌด์์ ์ด๋ป๊ฒ ํ์ฉํด์ผ ํ๋์ง ๋ชจ๋ฅด๊ฑฐ๋ ๋ถ์ฐ ๋ฝ, Rate Limiting ๊ฐ์ ์ค์ ํจํด์ ์ง์ ๊ตฌํํด๋ณธ ๊ฒฝํ์ด ๋ถ์กฑํ๊ฑฐ๋ Redis๋ฅผ ๋ฐฑ์๋ ์ํคํ ์ฒ ๊ด์ ์์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ์ญ์ ์ค์ ์๋น์ค ๊ฐ๋ฐ์ ํ๋ฉด์ ๋๋ ํธ๋ํฝ ํ๊ฒฝ์์ Redis๋ฅผ ์ด๋ป๊ฒ ํ์ฉํด์ผ ํ๋์ง ๊ณ ๋ฏผํ๋ ๊ฒฝํ์ด ์์ต๋๋ค. ๋จ์ํ ๋ช ๋ น์ด๋ฅผ ์๋ ๊ฒ๊ณผ ์๋น์ค ๋ฌธ์ ๋ฅผ Redis๋ก ํด๊ฒฐํ๋ ๊ฒ์ ์ ํ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๊ฐ์๋ Redis์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์๋ฃ๊ตฌ์กฐ๋ถํฐ ์์ํด, ์ค์ ๋ฐฑ์๋ ์๋น์ค์์ ์ฌ์ฉ๋๋ ํต์ฌ ํจํด์ ๋จ๊ณ์ ์ผ๋ก ๊ตฌํํ๋ฉฐ ํ์ตํ๋ ๊ฐ์์ ๋๋ค. ํนํ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฌด ๋ฌธ์ ๋ฅผ Redis๋ก ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค. ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๋ ์บ์ฑ(Cache-Aside) ์ ๋ต, ๋ก๊ทธ์ธ ์ํ๋ฅผ ๊ณต์ ํ๋ ๋ถ์ฐ ์ธ์ (Session Store), ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ถ์ฐ ๋ฝ(Distributed Lock), API ๊ณผ๋ถํ๋ฅผ ๋ง๋ Rate Limiting ๋๊ท๋ชจ ์ฌ์ฉ์์ ์ค์๊ฐ ๋ญํน ์์คํ (Leaderboard). ๋ชจ๋ ์ค์ต์ Python FastAPI ๊ธฐ๋ฐ์ ์ค์ API ์๋ฒ ํ๊ฒฝ์์ ์งํ๋๋ฉฐ,๋จ์ CLI ๋ช ๋ น์ด ํ์ต์ด ์๋๋ผ ๋ฐฑ์๋ ์์คํ ์์ Redis๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ง์ ๊ตฌํํ๋ฉด์ ์ดํดํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ฐ์๋ฅผ ํตํด Redis๋ฅผ ๋จ์ ์บ์๊ฐ ์๋ ๋ฐฑ์๋ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ๋ ํต์ฌ ๋๊ตฌ๋ก ํ์ฉํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
- ๋ฏธํด๊ฒฐ
Redlock ์๊ณ ๋ฆฌ์ฆ ๊ดํด ๊ถ๊ธํ๊ฒ ์์ต๋๋ค!
๋ ๋์ค ์๋ฒ ํ๋๊ฐ ์ฃฝ๋๋ผ๋ ๋ฝ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด 3~5๋์ ๋ค๋ฅธ ๋ ๋์ค ์๋ฒ๋ ํจ๊ผ ์๋๊ฑฐ๋ผ๋ฉด ์ด ์๋น์ค์ ๊ฒฝ์ฐ์๋ ๋ ๋์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋๊ธฐํ์ํค๋ ์์ ์ด ๋งค ์์ฒญ๋ง๋ค ์คํ๋๋ ๊ฑด๊ฐ์?<p style
์ํคํ ์ฒredisFastAPIportal.bj
ใป
12์ผ ์
0
37
2
- ๋ฏธํด๊ฒฐ
์ข์์/์กฐํ์ ์นด์ดํ ๋ณ๋ชฉํ์์ ๋ํด์ ๊ถ๊ธํ์ ์ด ์์ต๋๋ค.
์ข์์, ์กฐํ์๋ฑ ๋จ์ ์นด์ดํธ์์ Redis๋ฅผ ์ฐ๋ ์ด์ ์ค ํ๋๋ก RDB ์ ๋ณ๋ชฉํ์์ ๋ง์ํด ์ฃผ์ จ๋๋ฐRedis์ INCR ๋ช ๋ น์ด ์ญ์ ์๋ง๊ฐ์ ์ข์์ ์ฒ๋ฆฌ๋ฅผ ํ
์ํคํ ์ฒredisFastAPIportal.bj
ใป
13์ผ ์
0
31
2
- ๋ฏธํด๊ฒฐ
๋ฐฑ์๋ ์๋ฒ ์ฝ๋ ๋ณ๊ฒฝ์์ ํ๋ก ํธ์๋ ์๋ฒ๊ฐ ๊ฐ์ ํ์ฑํ์ง ๋ชปํ๋ ๋ฌธ์
stream_notices ๋ด๋ถ์ event_generator ํจ์ ์ฝ๋์์ yield f"data: {data}\\n\\n"์์
์ํคํ ์ฒredisFastAPI!?
ใป
ํ ๋ฌ ์
0
80
1
- ๋ฏธํด๊ฒฐ
๊ฐ์ฌ๋ GETDEL ๊ด๋ จํด์ ์ง๋ฌธ ์์ต๋๋ค
# Redis 6.2 ์ด์์ผ ๊ฒฝ์ฐ GETDEL ์ฌ์ฉ ๊ถ์ฅ # saved_code = await rd.getdel(cache_key)์ด ์ฝ๋ ์ฌ์ฉ์ ๊ถ์ฅํ์ จ๋๋ฐ ์ ๋ ฅ ๊ฐ ๋น๊ต ๊ฒ์ฆ๊น์ง ํต๊ณผํ๊ธฐ ์ ์
์ํคํ ์ฒredisFastAPI์์ฑ์ ์์
ใป
ํ ๋ฌ ์
0
88
2
- ๋ฏธํด๊ฒฐ
๋น๋ฐ๋ฒํธ๋ฅผ ๊ฑธ๊ณ ์คํ๋ ๋ ๋์ค ์๋ฒ์ lua ์คํฌ๋ฆฝํธ๋ฅผ ๋ฑ๋กํ๋ ๊ฒฝ์ฐ
docker exec -i my-redis redis-cli -x FUNCTION LOAD REPLACE <p style="text-align: lef
์ํคํ ์ฒredisFastAPI!?
ใป
ํ ๋ฌ ์
0
76
2
- ๋ฏธํด๊ฒฐ
๋ณด์ ์ค์ ์ ํ ์๊ฐ์๋ค์ Connection Settings์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฃ์ด์ผ ์ถ๊ฐ๋๋ค์
<img src="https://cdn.inflearn.com/public/files/posts/3656345b-45f3-42a9-8277-e1343566999a/e755e3be-9a0e-444c-8b6d-27512d5effe4.png" media-type="img"
์ํคํ ์ฒredisFastAPI!?
ใป
ํ ๋ฌ ์
0
58
2
- ํด๊ฒฐ
Redis Container ํดํน
์๋ ํ์ธ์. ์ข์ ๊ฐ์ ๊ฐ์ฌํฉ๋๋ค! docker container๋ก redis ์ค์ต ์ค ๋ชจ๋ ํค๊ฐ ์ ๊ฑฐ๋๊ณ backup1,backup2 ์
redisdocker์ ํจ์ฌ
ใป
ํ ๋ฌ ์
0
101
1






