๐ฅ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค/Redis
[Redis] ch.16 ์ ์ ์๊ฑฐ๋ ์ฑ์ ํ์ฉํด ์ค์ตํ๊ธฐ(์ผ๋ถ)
by OR15A
2024. 1. 28.
https://github.com/HongHyeongJu/StudySpace/blob/main/database/Redis/Redis_%ED%95%99%EC%8A%B5%EB%85%B8%ED%8A%B8_04.md
์ ๋ฐ๋ฏธ Redis : ๊ฐ๋ฐ์๋ฅผ ์ํ Redis ์๋ฒฝ ๊ฐ์ด๋
ch.16 - ์ ์ ์๊ฑฐ๋ ์ฑ์ ํ์ฉํด ์ค์ตํ๊ธฐ
114. ๋์์ฑ ๋ฌธ์ ์ดํดํ๊ธฐ
- ์
์ฐฐ ์ ๊ฐ์ ์์ฒญ์ด ์์ ๋ ๊ฐ์์ ์คํ์ ์์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฌ๋ฌ๋ช
์ด ๋์ฐฐ๋ฐ์ ์ ์์
- Redis์์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ณ์ฐ ์์
์ด๋ ๊ฒ์ฆ ์์
์ ์ํํ ๋ค์ ๋ค์ Redis์ ์ ์ฅํด์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด ์ธ์ ๋ ์ด์ ๋น์ทํ ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
- ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ ๊ณผ Redis์ ๋ค์ ์ ์ฅ ๋ฐ ์
๋ฐ์ดํธํ๋ ์์ ์ฌ์ด์ ๋ค๋ฅธ ์์ฒญ ๋๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ์์
์ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ถฉ๋์ด ์ผ์ด๋ ์ ์์ด์
- ์ธ์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ณ + ๋ฌด์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ ๋ค์ + ๋ค์ ์ ์ฅ ๋ฐ ์
๋ฐ์ดํธํ ๋ => ๋์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ ์์!!!
- ๋์์ฑ ๋ฌธ์ ๋ฅผ ์ง์ง ๋ฌธ์ ๋ก ๋ณผ ๊ฑด์ง ์๋์ง๋ ์ ํ๋ฆฌ์ผ์ด์
๊ท์น์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
- ex)
- Todo List์์ '์์', '์๋ฃ' ์์ฒญ์ด ๊ฒน์น๋ ๊ฒฝ์ฐ -> ํฐ๋ฌธ์ ์๋. ๋ง์ง๋ง ์ ๋ณด๋ก ์
๋ฐ์ดํธ ํ๊ฑฐ๋ ๊ถํ์ ์ด์ฉํ ์์์
- ๋์ฐฐ ๋ฑ ๋๊ด๋ จ ์ค์ํ ๋ฌธ์ ์์๋ ์กฐ์ฌํด์ผํจ
- ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ๋ฒ 4๊ฐ์ง
- 2๊ฐ์ง๋ ์ด๋ฒ ์ฑํฐ์์, ๋๋จธ์ง๋ ํ๋ฐ์ ์ค๋ช
- [1] ์๋ ์
๋ฐ์ดํธ commeand ์ฌ์ฉํ๊ธฐ (HINCRBY or HSETNX)
- [2] WATCH ๋ช
๋ น์ด๋ก ํธ๋์ ์
์ฌ์ฉํ๊ธฐ
- [3] ๋ฝ ์ด์ฉํ๊ธฐ
- [4] LUA ์
๋ฐ์ดํธ ์คํฌ๋ฆฝํธ๋ฅผ ์ปค์คํ
ํ๊ธฐ
์์์ ์
๋ฐ์ดํฐ ์ ์ฉํ๊ธฐ
- ๋์์ฑ ๋ฌธ์ ์ ์์ธ
- ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์ฌ์ด์ ์๊ฐ ์ฐจ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ
- ๋ฐ๋ก ์ด ์๊ฐ ๋์ ๋ค๋ฅธ ์์ฒญ์ด ์๋ฒ๋ก ๋ค์ด์์ ํ์ฌ ์ฝ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ ์ ์๊ธฐ ๋๋ฌธ์
- ํน์ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค์ง ์๊ณ ํ์ฌ ๊ฐ์ ์ฌ์ฉํด ์ ์๋ฆฌ์์ ์
๋ฐ์ดํธ ํ ์ ์์
- ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ inStock์ ์ด๊น๊ฐ์ ํ์ธํ๋ ๋จ๊ณ๋ฅผ ์๋ตํ๋๊ฒ = ์ฝ๋ ๋จ๊ณ๋ฅผ ์ ๋ถ ์๋ตํ๊ณ ๋ฐ๋ก ์ฐ๋ ๋จ๊ณ๋ก ๋์ด๊ฐ๊ธฐ
- ์ด๋ ๊ฒ ํ๋ ค๋ฉด โHINCRBYโ ๋ช
๋ น์ด๋ฅผ ์ฐ๊ธฐ (ํด์์ ๋ํด ์ค๋ช
ํ ๋ ๋ค๋ค์)
- ์ฐ๋ ๋์๋ง ์ํํ๋ฉฐ, ์ฝ๋ ๋์์ ์ํํ์ง ์์
- ex) ์ด๋ฒ์๋ ์ฐจ๋ ์์์ ๊ธฐ๋กํ๊ธฐ + ํ ๊ฐ์ง ์๊ตฌ์ฌํญ(์์ง ์์์ด ์ง์ ๋์ง ์์ ์ฐจ๋์ ๋ํด์๋ง ์์์ ์ง์ ํด์ผํจ)
- 'HSETNX'๋ฅผ ์ฌ์ฉํ๊ธฐ (HSETNX ๋ช
๋ น์ด๋ ํ๋กํผํฐ๊ฐ ์ค์ ๋์ง ์๋ ๊ฒฝ์ฐ์ ํํด ๊ฐ์ ์ค์ ํจ)
- HINCRBY, HSETNX ๋ช
๋ น์ด์ ํต์ฌ
- ์ด๋ฅผ ์ฌ์ฉํด ์ฝ๊ณ ์ฐ๋ ๋์ ์ฌ์ด์ ์๊ฐ ์ฐจ๋ฅผ ์๋ฒฝํ ์ ๊ฑฐํ ์ ์์
- ๋๋ ์ผ์ ๊ธฐ์ค์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์๋ง ์
๋ฐ์ดํธ๋ฅผ ์ํํ๊ฒํ ์ ์์
- ํ์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ์ด ๋ช
๋ น์ด๋ง์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์
- ์
์ฐฐ ๋ฐ์ดํฐ ์์ฑ์ HSET๋ฟ๋ง ์๋๋ผ RPUSH๋ ์ฌ์ฉํจ
- ๋ํ ๋ฆฌ์คํธ ์ฒ๋ฆฌ์ HSETNX ๊ฐ์ ๋ช
๋ น์ด๋ ํฐ ๋์์ด ๋์ง ์์
- ๊ทธ๋์ ํธ๋์ญ์
์ด ํ์ํจ
ํธ๋์ญ์
- ์ฌ๋ฌ ๊ฐ์ ๋ช
๋ น์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋ ์ ์๋๋ก ๋ณด์ฅํด์ค
- Redis์์๋ ํธ๋์ญ์
๋กค๋ฐฑ๊ณผ ์ทจ์๋ ํ ์ ์์(๊ทธ๋์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋นํด ํธ๋์ญ์
์ ํ์ฉ๋๊ฐ ๋จ์ด์ง)
- MULTI
- Redis์๊ฒ ๊ณง ์ฌ๋ฌ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ๋ณด๋ผ ๊ฑฐ๊ณ , ๋ฐ๋ก ์คํํ์ง๋ ์์ ๊ฑฐ๋ผ๋ ๋ป
- ์กฐ๊ธ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋์ค์ ์ฐจ๋ก๋๋ก ์คํํ ๋ ์ฌ์ฉํจ
- MULTI๋ฅผ ์ฌ์ฉํด์ ํธ๋์ญ์
์ ์์ํ ๋ค์์๋, ์ค์ ๋ก ์คํํ ๋ช
๋ น์ด๋ค์ ์ ์กํจ
- โQUEUEDโ๋ผ๋ ๋ฉ์ธ์ง : ๋ช
๋ น์ด๊ฐ ๋๊ธฐ์ด์ ์ถ๊ฐ๋์ด ์คํ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์์ ์๋ฏธํจ
- EXEC
- ์คํํ ๋ช
๋ น์ด๋ค์ ์ค์ ๋ก ์คํํ๊ฒ ํจ
ํธ๋์ญ์
์ผ๋ก ํค ๊ฐ์ํ๊ธฐ
- WATCH
- Redis๊ฐ ํน์ ํค์ ์ ์ฅ๋ ๊ฐ์ ์ง์ผ๋ณด๋๋ก ์ง์ํจ
- ๋ค์ ํธ๋์ญ์
์ด ์คํ๋๊ธฐ ์ ์ ์ง์ผ๋ณด๋ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด, ํด๋น ํธ๋์ญ์
์ ์๋์ผ๋ก ์คํจํจ
- ์ง์ผ๋ณด๋ ํค๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ฉด EXEC๋ฅผ ํธ์ถํ๋ ์๊ฐ null์ด ๋ฐํ๋จ
- Redis์์ ๊ฐ์ ์ฝ์ด์จ ๋ค์, ์ ์ ์๊ฐ์ ๋ค์ฌ ์ฒ๋ฆฌ ์์
์ ์งํํ๊ณ , ๋ค์ ์ฐ๊ธฐ ์์
์ ์คํํ๋ ๊ฒฝ์ฐ์๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋ชจ๋ ํธ๋์ญ์
์ผ๋ก ๊ฐ์ธ์ฃผ๊ณ , WATCH ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ
- WATCH ํค์๋์์ ์์ฃผ ๋ณผ ์ ์๋ ์ ํ์ ์ธ ์ฌ์ฉ ํจํด ์์๋๊ธฐ
ํธ๋์ญ์
์ฉ ์ฐ๊ฒฐ ๋ถ๋ฆฌ
- ์์ฃผ ์ฌ์ฉ๋๋ ํจํด
- WATCH => ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ => ํธ๋์ญ์
์คํ
- WATCH ์คํ
- GET, HGETALL ๋ฑ์ ๋ช
๋ น์ด๋ก Redis์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๊ธฐ
- MULTI, SET, EXEC๋ก ํธ๋์ญ์
์ ๊ตฌ์ฑํ๊ธฐ
- ์ฃผ์์
- ํธ๋์ญ์
์ ์ฌ์ฉํ๋ฉด WATCH๋ MULTIํค์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค Redis๊ณผ์ ์ฐ๊ฒฐ์ ์์ ํ ์ ์ ํ๊ฒ๋จ
- ํด๋น ์ฐ๊ฒฐ์ ์ด ํธ๋์ญ์
๋ง ์ฌ์ฉํ ์ ์๊ฒ ๋๊ณ , ๋ค๋ฅธ๋ฐ์๋ ์ฌ์ฉํ ์ ์์
ํธ๋์ญ์
์ผ๋ก ์ค๋ณต ์
์ฐฐ ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ
๊ฐ๊ฒฉ์ ์ ๋ ฌ & ํจ์ ๊ตฌํ
- ํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ
- ํ๊ธฐ