์บ์๋?
- ํ๋ฒ ์ฝ์(์ฒ๋ฆฌํ) ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ณ ํ์์ ๋ฐ๋ผ ์ ์ก,๊ฐฑ์ ,์ญ์ ํ๋ ๊ธฐ์ ๋ก
๋ณดํต์ ๋ฐ์ดํฐ์ ๋ณด๊ด์ฅ์๋ก ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. - ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋์คํฌ์์ ์ ๋ณด๋ฅผ ์ป์ด์ค๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ I/O์ฑ๋ฅ์ ์ป์ ์ ์์ผ๋ ์๋ฒ๊ฐ ๋ค์ด๋๊ฑฐ๋ ์ฌ๋ถํ ๋๋ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๋ ์ฑ๊ฒฉ์ ํ๋ฐ์ฑ์ ๊ฐ์ง๊ณ ์์ด
- ์์์ ์ผ๋ก ๋ณด๊ดํ ์ ์๋, ๋ง ๊ทธ๋๋ก ์์์ ์ผ๋ก ๋ณด๊ดํ๊ณ ๋น ๋ฅด๊ฒ ๊ทธ ์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉํด์ผ ํ๋ค.
- ๋ฌผ๋ก ์ ๋ณด์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ณ๋์ ๋์คํฌ๋ฐฑ์ ๋ฐ TTL๋ฑ์ ์ค์ ์ผ๋ก ์๊ตฌ๋ณด๊ด์ด๋ ์ค๋๊ธฐ๊ฐ ์ ์ง๊ฐ ๊ฐ๋ฅํ๋ค. ๋จ ์ด๋ฐ ์ค์ ๋ค์ด ๊ผญ ํ์ํ๋ค๋ฉด Cache๋ฅผ ์ ์ฉํ๋๊ฒ ๋ง๋์ง ํ ๋ฒ๋ ํ๋น์ฑ์ ๊ฒํ ํด ๋ณด๋๊ฒ ์ข๊ฒ ๋ค.
๋ชฉ์
- ์๋ฒ๊ฐ ๋ถํ์ํ ํธ๋ํฝ์ ์ค์ผ ์ ์๊ณ ,
- ๊ทธ๋ก ์ธํด ์น์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ถํ ๊ฐ์์ํค๊ณ
- ์ดํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅธ ์ฒ๋ฆฌ์ฑ๋ฅ(์กฐํ)์ ํ๋ณดํด์ ๊ถ๊ทน์ ์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ๊ณ ๊ฐ์๊ฒ ์พ์ ํ ์๋น์ค๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ
Redis
Redis๋ ํค-๊ฐ ๊ธฐ๋ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ์(In-Memory Database, IMDB)์ด๋ค.
ํน์ง
- ํค-๊ฐ ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ๋ก ํ ํ์์์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.
- ๋ํ, ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ๋์คํฌ ์ ๊ทผ์ด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๋ณด๋ค ๋๋ฆฌ๊ธฐ ๋๋ฌธ
- ๋ด๋ถ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ๋จ์ํ๋ฉฐ ๋ ์ ์ CPU ๋ช ๋ น์ ์คํํ๋ค.
- ์ฑ๊ธ ์ค๋ ๋
- 1๋ฒ์ 1๊ฐ์ ๋ช ๋ น์ด๋ง ์คํ ๊ฐ๋ฅ
- ๋ฉํฐ ์ค๋ ๋, ๋ฉํฐ ํ๋ก์ธ์ค ์ฝ์ด๋ฅผ ์ง์ํ๋ Memcahed์ ์ฐจ์ด์
- Master-Slaves ๊ตฌ์กฐ๋ก ์ฌ๋ฌ๊ฐ์ ๋ณต์ ๋ณธ์ ๋ง๋ค ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ๊ธฐ๋ฅผ ํ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ ๊ฐ์ฉ์ฑ(์ค๋ ์๊ฐ๋์ ๊ณ ์ฅ๋์ง ์์) ํด๋ฌ์คํฐ๋ฅผ ์ ๊ณต
- ํธ๋์ญ์ ์ง์
- ๋งค์ฒด๊ฐ ํ๋ฐ์ฑ
- ์๋ฒ ์ ์์ด ๊บผ์ง๋ฉด, ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋จ
ํน์ง
- Redis๋ List, Set, Sorted Set, Hash ๋ฑ๊ณผ ๊ฐ์ Collection์ ์ง์ํฉ๋๋ค. (= ๋ฐ์ดํฐ ๊ตฌ์กฐ(Collection) ์ ๊ณต)
- String : ๋จ์ ํค-๊ฐ ๋งคํ ๊ตฌ์กฐ
- List : Array ํ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ. ์ฒ์๊ณผ ๋์ ๋ฐ์ดํฐ ์ฝ์ ์ ์๋๊ฐ ๋น ๋ฅด์ง๋ง, ์ค๊ฐ ๋ฐ์ดํฐ ์ฝ์ ์ ๋๋ฆด ์ ์์.
- Set : ์์๊ฐ ์์ String ๋ฐ์ดํฐ ์งํฉ. ์ค๋ณต๋ ๋ฐ์ดํฐ๋ ํ๋๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ ๋ํ ๊ฑฑ์ ์์.
- Sorted Set : Set๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ด์ง๋ง, Score์ ํตํด ์์๋ฅผ ์ ํ ์ ์๋ค.
- Hash : ํค-๊ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ๋ฌ๊ฐ ๊ฐ์ง Object ํ์ ์ ์ ์ฅํ๊ธฐ ์ข์ ๊ตฌ์กฐ
- Race condition์ ๋น ์ง ์ ์๋ ๊ฒ์ ๋ฐฉ์งํจ
- Redis๋ Single Thread
- ๋ฐ๋ผ์ Atomic ๋ณด์ฅ
- persistence๋ฅผ ์ง์ํ์ฌ ์๋ฒ๊ฐ ๊บผ์ง๋๋ผ๋ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ๋ค์ผ ์ ์์ต๋๋ค.
ํ์ฉ
- Remote Data Store
- ์ฌ๋ฌ ์๋ฒ์ Data ๊ณต์ ๋ฅผ ์ํด ์ฌ์ฉ๋ ์ ์์.
- ํนํ, Redis์ ๊ฒฝ์ฐ Single Thread ์ด๋ฏ๋ก Race Condition ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ๋ค๋ ๊ฒ์ ํ์ฉํ ํ์๊ฐ ์์ ๊ฒฝ์ฐ
- ์ธ์ฆ ํ ํฐ ๊ฐ๋ฐ
- Ranking Board (Sorted Set)
- ์ ์ API Limit
- Job Queue
์ฐธ๊ณ
- yongkyu-jang.medium.com/%EC%9A%B0%EB%A6%AC%EA%B0%80-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EA%B0%9C%EB%B0%9C%ED%95%A0-%EB%95%8C-%EB%B0%B1%EC%95%A4%EB%93%9C-%EC%98%81%EC%97%AD%EC%97%90%EC%84%9C-cache%EB%A5%BC-%EC%A0%81%EA%B7%B9%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B2%8C-%EB%90%98%EB%A9%B4-%EC%83%9D%EA%B0%81%ED%96%88%EB%8D%98%EA%B2%83-%EB%B3%B4%EB%8B%A4-%EB%8D%94-%EB%93%9C%EB%9D%BC%EB%A7%88%ED%8B%B1%ED%95%9C-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0%EC%9D%84-%EA%B0%80%EC%A0%B8%EC%98%AC-%EC%88%98-%EC%9E%88%EB%8B%A4-%EA%B3%A0-%EC%83%9D%EA%B0%81%ED%95%9C%EB%8B%A4-98ab99adfd69
- sabarada.tistory.com/103
- brunch.co.kr/@jehovah/20
- chrisjune-13837.medium.com/redis-vs-memcached-10e796ddd717
'๐CS > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค(Transaction Isolation Level) (0) | 2021.04.23 |
---|---|
[DB] ํธ๋์ญ์ (Transaction) (0) | 2021.04.23 |
[DB] Connection Pool (0) | 2021.04.18 |
[DB] ์ ๊ทํ (0) | 2021.04.11 |
[DB] N + 1 ๋ฌธ์ (0) | 2021.04.11 |
๋๊ธ