CS ๊ณต๋ถ
Redis
์์ง
2021. 11. 25. 21:04
- WEB-WAS-DB์ ์ ํ์ ์ธ 3ํฐ์ด ๊ตฌ์กฐ -> ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฉด DB์ ์ฌ์ฌ ๋ฌด๋ฆฌ๊ฐ ๊ฐ๊ธฐ ์์
- ๋งค transaction ๋ง๋ค ๋์คํฌ์ ์ ๊ทผํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ถํ๊ฐ ๋ง์์ง๋ฉด ์๋นํ ๋๋ ค์ง
- ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฉด DB๋ง์ผ๋ก๋ ๋ถํ๋ฅผ ๊ฒฌ๋ ์ ์์ด ์บ์์๋ฒ ๋์
์บ์
- ํ ๋ฒ ์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์์์ ๊ณต๊ฐ์ ์ ์ฅํ์ฌ ๋ค์์ ์ฝ์ ๋๋ ๋น ๋ฅด๊ฒ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ ์ ์๋๋ก ๋์์ฃผ๋ ๊ณต๊ฐ
- ๊ฐ์ ์์ฒญ์ด ์ฌ๋ฌ๋ฒ ๋ค์ด์ค๋ ๊ฒฝ์ฐ ์บ์์๋ฒ์์ ๋ฐ๋ก ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ
- DB๋ถํ๋ฅผ ์ค์ผ ์ ์์, ์๋น์ค์ ๊ฐ์
cache Hit
- ํด๋ผ์ด์ธํธ๊ฐ ์น์๋ฒ์ ์์ฒญ
- ์น์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์ค๊ธฐ ์ ์ Cache์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธ
- Cache์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด, ๋ฐ์ดํฐ๋ฅผ DB์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ง ์๊ณ ๋ฐ๋ก ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ
cache Miss
- cache ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด DB์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์์ฒญ
- DB๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ
- ์น์๋ฒ๋ ๋ฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฌ์ฉ์ ์ํด ์บ์์ ์ ์ฅํ ํ ํด๋ผ์ด์ธํธ์ ๋ฐํ
NOSQL
- Not Only SQL, ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, RDBMS๊ฐ ์๋ ๋ค๋ฅธ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ์
- ํค-๊ฐ์ด๋ ์ปฌ๋ผ, ๋ฌธ์ ํ์์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ด์ฉ
- NOSQL์ ์ข ๋ฅ : ํค-๊ฐ (Redis, Memcached), ์ปฌ๋ผ, ๋ํ๋จผํธ, ๊ทธ๋ํ ๊ตฌ์กฐ
- ์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋, ๋ฐ์ดํฐ์ ๋ถ์ฐ์ฒ๋ฆฌ, ๋น ๋ฅธ ์ฐ๊ธฐ ๋ฐ ๋ฐ์ดํฐ์ ์์ ์ฑ์ด ํ์ํ ๋ ์ฌ์ฉ
- ํน์ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋์๋ ๋ฐ์ดํฐ ์ ์ค์ด๋ ์๋น์ค ์ค์ง๊ฐ ์๋ ํํ์ ๊ตฌ์กฐ
Redis
- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ “ํค-๊ฐ” ๊ตฌ์กฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์์คํ
- ์บ์์๋ฒ๋ ์๋๋ฅผ ์ํด์ ์ฃผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ
- ์บ์์๋ฒ๋ก ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ Redis
- ์บ์ ๋ฐ์ดํฐ ์ ์ฅ, ์ธ์ฆ ํ ํฐ ์ ์ฅ, Ranking Board ๋ฑ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ
- ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์กฐํํ๊ธฐ์ ๋น ๋ฅธ Read, Write ์๋๋ฅผ ๋ณด์ฅํ๋ ๋น ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
Redis Collection ์์ ์ง์ํ๋ ์๋ฃ๊ตฌ์กฐ
- ํฌ๊ฒ 5๊ฐ์ง< String, Set, Sorted Set, Hash, List >์ ๋ฐ์ดํฐ ํ์ ์ง์
- String : ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํํ๋ก, key - value ๋ก ์ ์ฅํ๋ ํํ์ด๋ค.
- Set : ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์ง ์๊ธฐ ์ํด ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๋ฒ ์ ์ฅํ๋ฉด ์ต์ข
ํ๋ฒ๋ง ์ ์ฅ๋๋ค.
์ด๊ฑธ ์ฌ์ฉํ์ ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ๋ค ๊ฐ๊ณ ์ฌ ์ ์๋ ๋ช ๋ น์ด ์์ผ๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค. - List : Array ํ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค. List ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์๊ณผ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋นผ๋๊ฑด ์๋๊ฐ ๋น ๋ฅด์ง๋ง ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ๋๊ฑด ์ด๋ ค์์ด ์๋ค.
- Sorted Set : ์ ์ ๋ญํน ๋ณด๋์๋ฒ ๊ฐ์ ๊ตฌํ์์ ์ฌ์ฉํ ์ ์๋ค.
- Hash : ํค-๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์ฌ๋ฌ๊ฐ ๊ฐ์ง object ํ์ ์ ์ ์ฅํ๊ธฐ ์ข์ ๊ตฌ์กฐ์ด๋ค.
Redis์ ํน์ง
- value ๊ฐ์ผ๋ก ๋ฌธ์์ด, ๋ฆฌ์คํธ, Set, Sorted set, Hash ๋ฑ ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์์ ์ง์
- ์ฌ๋ฌ ํ๋ก์ธ์ค์์ ๋์์ ๊ฐ์ key์ ๋ํ ๊ฐฑ์ ์ ์์ฒญํ ๊ฒฝ์ฐ, Atomic ์ฒ๋ฆฌ๋ก ๋ฐ์ดํฐ ๋ถ์ ํฉ ๋ฐฉ์ง Atomic ์ ์ ์งํด
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ๋ฉด์ ์์์ ์ธ ๋ฐ์ดํฐ ๋ณด์กด, ์ฅ์ ์ ๋ณต๊ตฌ๊ฐ๋ฅ (๋์คํฌ์ ๋ฐ์ดํฐ ์ ์ฅ)
- Redis Server๋ Single threaded๋ก ์ํ
- ํ ๋ฒ์ ๋ฑ ํ๋์ ๋ช ๋ น์ด๋ง ์คํ --> Atomic ๋ณด์ฅ
์ถ์ฒ
Dayone, https://brunch.co.kr/@jehovah/20