๊ฐ๋ฐ ์ค ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋์ผํ ๋ฐ์ดํฐ์ ๋ํ ์ฝ์ ์์ฒญ์ด ๋์์ ๋ค์ด์ค๋ ๊ฒฝ์ฐ, ์ค๋ณต ๋ฐ์ดํฐ ๊ฒ์ฌ ๋ก์ง์ ๊ฑฐ์น๋๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต ์ฝ์ ๋๋ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ค.
์ค๋ณต ๋ฐ์ดํฐ ๊ฒ์ฌ ๋ก์ง์ ์ฑ๊ธ์ค๋ ๋ ๊ธฐ๋ฐ์ธ Redis๋ฅผ ํตํด ๊ฒ์ฆํ๋ ๋ก์ง, DB์ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋์ง ๊ฒ์ฌํ๋ ๋ก์ง 2depth์ ๊ฑธ์ณ ๊ฒ์ฌํ๊ณ ์์๋ค.
์ด์ ๊ฐ์ด ๋์์ฑ์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ DB ํ ์ด๋ธ์์ ์ด๋ฒคํธID, ํ์๋ฒํธ๋ฅผ unique ์ ์ฝ ์กฐ๊ฑด์ ๊ฑธ์ด์ฃผ๋ฉด ๋๋ค.
ํ์ง๋ง ๊ฐํน 2ํ ์ด์ ์ฐธ์ฌํ ์ ์๋ ์ด๋ฒคํธ๋ ์์ ์ ์๋ค. ํน์ ํ๋์ ์ด๋ฒคํธ๋ง์ ๋ค๋ฃฌ๋ค๋ฉด unique ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐํ๋๊ฒ ํจ์จ์ ์ด๊ฒ ์ง๋ง ์ฌ๋ฌ๊ฐ์ง ์ด๋ฒคํธ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋๊ฒ ์ข์ ๊ฒ ๊ฐ์๋ค.
๊ทธ ์ค ํ๋๋ก Redis๋ฅผ ํ์ฉํ ๋ถ์ฐ๋ฝ(Distributed Locking)์ด ์๋ค.
๋ถ์ฐ๋ฝ์ ์๋ฆฌ๋ ์๋์ ๊ฐ๋ค.
1. ๋ถ์ฐ๋ฝ ํ๋
2. ๋น์ฆ๋์ค ๋ก์ง
3. ๋ถ์ฐ๋ฝ ํด์
๊ธฐ์กด ๊ตฌ์กฐ์ ๋ฌธ์ ์
๊ธฐ์กด ๊ตฌ์กฐ๋
1. Redis์์ ํ์์ ๋ณด ๋์ผํ ๋ฐ์ดํฐ ์๋์ง ํ์ธ
2. DB์์ ํ์์ ๋ณด ๋์ผํ ๋ฐ์ดํฐ ์๋์ง ํ์ธ
3. ๋น์ฆ๋์ค ๋ก์ง
2024/3/24
"์ด๋ฌํ ๊ฒฝ์ ์กฐ๊ฑด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ๋๋ฆฌ ์๋ ค์ง ํด๊ฒฐ์ฑ ์ ๋ฝ(lock)์ด๋ค.
ํ์ง๋ง ๋ฝ์ ์์คํ ์ ์ฑ๋ฅ์ ์๋นํ ๋จ์ด๋จ๋ฆฐ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
์ ์ค๊ณ์ ๊ฒฝ์ฐ์๋ ๋ฝ ๋์ ์ธ ์ ์๋ ํด๊ฒฐ์ฑ ์ด ๋ ๊ฐ์ง ์๋๋ฐ, ํ๋๋ ๋ฃจ์ ์คํฌ๋ฆฝํธ(Lua Script)์ด๊ณ ๋ค๋ฅธ ํ๋๋ ์ ๋ ฌ ์งํฉ(sorted set)์ด๋ผ ๋ถ๋ฆฌ๋ ๋ ๋์ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฐ๋ ๊ฒ์ด๋ค."
- ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด (71p)
์ ๊ตฌ์ ์ ์ฝ๊ณ ๋ฝ์ ์ ์์คํ ์ ์ฑ๋ฅ์ ์๋นํ ๋จ์ด๋จ๋ฆฌ๋ฉฐ, ์ถ์ฒํ์ง ์๋ ๋ฐฉ๋ฒ์ธ์ง ๊ถ๊ธํด์ก๋ค.
๋ฝ์ ์์คํ ์ ์ฑ๋ฅ์ ์ ๋จ์ด๋จ๋ฆด๊น?