๐ฅ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค/Redis
[Redis] ch.4 Redis ๋ก์ปฌ ์ค์ / ch.5 ํด์ ์๋ฃ ๊ตฌ์กฐ
by OR15A
2024. 1. 26.
https://github.com/HongHyeongJu/StudySpace/blob/main/database/Redis/Redis_%ED%95%99%EC%8A%B5%EB%85%B8%ED%8A%B8_02.md
์ ๋ฐ๋ฏธ Redis : ๊ฐ๋ฐ์๋ฅผ ์ํ Redis ์๋ฒฝ ๊ฐ์ด๋
ch.04 - Redis ๋ก์ปฌ ์ค์ && ch.05 - ํด์ ์๋ฃ ๊ตฌ์กฐ
Redis Window ์ค์น
- Redis์๋ Redis์ Redis Stack, ๋ ๊ฐ์ง ๋ฒ์ ์ด ์์ต๋๋ค.
- Redis์๋ ํต์ฌ Redis๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํฌํจ๋ฉ๋๋ค.
- Redis Stack์๋ ํต์ฌ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ทธ๋ฆฌ๊ณ Redis์ ๊ธฐ๋ฅ์ ํ์ฅํด ์ฃผ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ํฌํจ๋ผ ์์ต๋๋ค.
- Redis Labs์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด Redis Stack์ ์ฌ๋ณธ์ ์ป์ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ์ด๋ฏธ ์ค์น๋ ์ถ๊ฐ ๋ชจ๋์ด ์์ต๋๋ค.
- ๊ฐ์ ๊ณผ์ ํ๋ฐ๋ถ๋ก ๊ฐ๋ฉด ์ด ์ถ๊ฐ ๋ชจ๋์ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก Redis Stack์ ์คํํด์ผ ํฉ๋๋ค.
- ์ค์น ๊ฐ์ด๋ : https://redis.io/docs/install/install-stack/docker/
Redis์ ํด์
- ํด์๋ก ์ค์ฒฉ๋ ํค-๊ฐ ์์ ๋ชจ์์ ์ ์ฅํ ์ ์์
- ํด์์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก
- ์ ํ๋ฆฌ์ผ์ด์
์ ํน์ ๋ ์ฝ๋๋ ์ํฐํฐ์ ์ ๋ณด๋ฅผ ์ ์ฅํจ
- ์ฃผ์ํ ์
ํด์๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ ๋จ๊ณ๋ก ์ค์ฒฉ๋ ํค-๊ฐ ์์ ์ ์ฅํ ์ ์์
- JSON ๊ตฌ์กฐ์ ์ ์ฌํจ
ํด์ ์ ์ฅ ๋ฐ ๊ฐ์ ธ์ค๊ธฐ
- HSET
- ์ฒซ๋ฒ์งธ ์ธ์ : ํด์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ์ฅํ ํค ์ด๋ฆ
- ์ฒซ๋ฒ์งธ ์ธ์ ๋ค์์๋ [ํค์ด๋ฆ, ๊ฐ]์ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํ๊ธฐ
- ex)
HSET company name, 'Company Co', age, 1915
-> ๋ฐํ์ซ์ 2 : 2๊ฐ์ ํค-๊ฐ ์์ ์
๋ฐ์ดํธํ๋ค๋ ์๋ฏธ
- HGET
HSET company name
-> 'Company Co' q๋ฐํ
- HGETALL
HGETALL company
-> ["name": "Company Co", "age": "1915"]
์ค์ ๋ก๋ ๋ฐฐ์ด๋ก ๋ฐํํจ
- ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ด์ ๊ฐ์ ๋ฐฐ์ด์ด ๋ฐํ๋๋ฏ๋ก ์ง์ ํค-๊ฐ ์์ ์ค๋ธ์ ํธ๋ก ๋ณํํด์ผ ํ ์ ์์
- ํ๊ธฐ
- ํ๊ธฐ
ํด์ ๋ฐ์ดํฐ ์ญ์ ํ๊ธฐ
- HEXISTS
- ๊ธฐ์กด ํด์์ ํค๊ฐ ์ ์๋์ด ์๋์ง ํ์ธ. ํค์ ์กด์ฌ๋ง ํ์ธ
- ex)
HEXISTS company age
-> ํด์์์ age๊ฐ ์์ผ๋ฉด 1 ๋ฐํ, ์์ผ๋ฉด 0 ๋ฐํ
- ์ฃผ์์
- Redis๊ฐ ์ ์ฅ๋ ๊ฐ์ ๊ฒ์ฆํ์ง๋ ์์. age์ ๋น ๋ฌธ์์ด, 0, false๋ฑ ์๋ชป๋ ๊ฐ์ด ๋ด๊ฒจ์์ ์ ์์
- DEL
- ๋ฌธ์์ด์ ๋ช
๋ น์ด์ ๋์ผํ๊ฒ ์๋ํ๋ฉฐ ํด๋น ํค์ ์ ์ฅ๋ ํด์ ์ ์ฒด๋ฅผ ์ญ์ ํจ
DEL company
- HDEL
- ํด์์ ์ ์ฅ๋ ํค-๊ฐ ์ ํ๋๋ฅผ ์ญ์
HGETALL company
ํด์์์ ์ซ์ ๋ค๋ฃจ๊ธฐ
- HINCRBY
- ํด์ ๋ด์ ์ซ์์ ์ ์ ๋ํ๊ธฐ
HINCRBY company age 10
- ํด์ ๋ด์ ์กด์ฌํ์ง ์๋ ํค์ HINCRBY๋ฅผ ์คํํ๋ฉด ํค๊ฐ ์์ฑ๋จ
- ์์ ๊ฐ์ ์ ๋ฌํ๋ฉด ๊ธฐ์กด ๊ฐ์์ ๋บ ์ ์์
- HINCRBYFLOAT
- ํด์ ๋ด์ ์ซ์์ ์ค์ ๋ํ๊ธฐ
HINCRBYFLOAT company age 1.005
- HSTRLEN
- ํด์์ ์ ์ฅ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ฐ์ ธ์ด
- HKEYS
- ํด์์ ๋ชจ๋ ํค ๊ฐ์ ธ์ค๊ธฐ
- HVALUES
- ํด์์ ๋ชจ๋ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
HSET์ HGETALL์ ์์์น ๋ชปํ ๋์
HSET ๊ด๋ จ ๋ฌธ์
- HSET ๋ช
๋ น์ด์๋ ํค์ ๊ฐ์ด ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ๋ฌธ์์ด๋ก ์์ฑ๋์ด์ผ ํจ
- node์์ ์ฟผ๋ฆฌ ์
๋ ฅ ์ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋๋ก Redis์ ์ ๋ฌํ๋ ๊ฒ ์๋๋ผ node-redis๊ฐ ์ค๋ธ์ ํธ๋ฅผ ์ฒ๋ฆฌํ ๋ค์์ ์ ๋ฌํจ
- ์ด ์ฒ๋ฆฌ ๊ณผ์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ๋๋ค
- node-redis๊ฐ ํ๋ ์์
- ์ค๋ธ์ ํธ๋ฅผ ๋ฐ์ Redis๊ฐ ์ดํดํ ์ ์๋ HSET ๋ช
๋ น์ด๋ก ๋ณํํด์ผ ํฉ๋๋ค
- ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ ์์
- ํด์์ ํค ์ด๋ฆ์ธ car ์ดํ์๋ ์ผ๋ฐ์ ์ธ HSET ๋ช
๋ น์ด์ฒ๋ผ ํค์ ๊ฐ์ ๋ฒ๊ฐ์ ์์ฑ => OK
- ์ด์ ๋ฌธ์์ด์ ๊ฐ์ ์
๋ ฅํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์
- ์ค๋ธ์ ํธ ์์ ๊ฐ์ ํ๋์ฉ ํ์ธํด toString() ๋ฉ์๋๋ฅผ ํธ์ถํจ (๊ทธ๋ฌ๋ ๊ฐ ์ค์ null๊ณผ undefined๊ฐ ์์)
- ์๋ฐ์คํฌ๋ฆฝํธ์์ null ๋๋ undefined์ ํ๋กํผํฐ๋ฅผ ์ก์ธ์คํ๋ ค๊ณ ํ๋ฉด ์ฆ์ ํฐ๋ฏธ๋์ ํ์๋์๋ ๊ฒ๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฐํ ๋จ
- node-redis๋ก๋ null ๊ฐ์ ์ ์ฅํ ์ ์์
- ํด๊ฒฐ๋ฐฉ์
- ๊ฐ ์๋ ์์ฑ ์ญ์
- null || ''๋ก ์ ์ํด์ ๋น ๋ฌธ์์ด ๋ฃ๊ธฐ
HGETALL ๊ด๋ จ ๋ฌธ์
- ์ด์ํ๊ฒ ๋์ํ๋ ์ด์ : HGETALL์ ๊ธฐ๋ณธ์ ์ธ ํน์ฑ ๋๋ฌธ
- Redis์ ์กด์ฌํ์ง ์๋ ํค์ ์ก์ธ์คํด ํด์๋ฅผ ์ฝ์ผ๋ ค๊ณ ํ๋ฉด => ๊ธฐ๋ณธ์ ์ผ๋ก ๋น ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํจ {}
- ํด๊ฒฐ๋ฐฉ์
if(!car){ํด๋น ํค๊ฐ ์กด์ฌํ์ง ์์ ๋์ ๋์}
: if๋ฌธ์ ์ ๋ ์ถฉ์กฑ๋ ์ ์์
- ์กฐ๊ฑด์ ์์ ํ์! ๋น ์ค๋ธ์ ํธ๊ฐ ๋ฐํ๋์๋ค๋ฉด ์๋ง ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ง ๋ชปํ์ ๊ฒ์ด๋ฏ๋ก ๋ฐ๋ผ์ car ์ค๋ธ์ ํธ์ ๊ธธ์ด๋ฅผ ํ์ธํ๋ฉด ๋จ
- ๊ธธ์ด๊ฐ 0์ด๋ผ๋ฉด ๋น ์ค๋ธ์ ํธ
if(Objet.keys(car).length===0){ํค ์กด์ฌ ์ํ ๋ ์ํ๋ ๋์}
- ์ ๋ฆฌ
- HSET์ ์ฌ์ฉํ ๋๋ ์ ์ฅํ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ธ์ง ์ฃผ์ํด์ผํจ.
- HGETALL์ ์ฌ์ฉํ ๋๋ ์กด์ฌํ์ง ์๋ ํค๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํด๋ ํญ์ ๋น ์ค๋ธ์ ํธ๊ฐ ๋ฐํ๋๋ฏ๋ก ํ์ธ ์ ๊ฐ์ฒด์ ๊ธธ์ด ํ์ธํ๊ธฐ