Post

๐ŸŽฑ Redis๋ฅผ ๋„์ž…ํ•ด์„œ ์บ์‹ฑ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด๋ณด์ž!!! [1ํƒ„]

๐ŸŽฑ Redis๋ฅผ ๋„์ž…ํ•ด์„œ ์บ์‹ฑ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด๋ณด์ž!!! [1ํƒ„]

๐Ÿ–ค Intro

์ด๋ฒˆ์— ์ถ”์ฒœ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋ฉด์„œ ์ถ”์ฒœ ์‹œ์Šคํ…œ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์œ ์ € ์ •๋ณด๋ฅผ ์บ์‹ฑํ•ด๋‘๊ธฐ ์œ„ํ•ด memoryDB์ธ REDIS๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์˜ ๊ฒฝ์šฐ๋Š”, REDIS์˜ ๊ฐœ๋…์ด๋‚˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๋งŒ ์•Œ๊ณ  ์ด๊ฒƒ์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด๋ณธ์ ์€ ์—†๊ธฐ ๋•Œ๋ฌธ์—โ€ฆ.์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด REDIS์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ์ธ โ€œ์บ์‹ฑโ€์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

REDIS๋„ ํ™œ์šฉ ๋ฐฉ๋ฒ•์ด ์›Œ๋‚™ ๋งŽ๊ณ  ๊นŠ๊ฒŒ ์“ฐ์ž๋ฉด ๋”ฅํ•˜๊ฒŒ ์“ฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์—†๊ณ  ๋ฐ”๋กœ ํ”„๋กœ์ ํŠธ์— ์ด๊ฒƒ์„ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๊ธฐ์—,,, ๋”ฑ ์บ์‹ฑ์— ์ดˆ์ ์„ ๋งž์ถฐ์„œ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

๐Ÿฉถ Start

๋ ˆ๋””์Šค๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋ ˆ๋””์Šค๋Š” ์˜คํ”ˆ์†Œ์Šค๋กœ, key-value ๊ธฐ๋ฐ˜์˜ ์ธ-๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋”ฐ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆด ํ•„์š” ์—†์ด key๋กœ ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ , ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š” ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ, ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌDB ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ฃผ๋กœ ์บ์‹ฑํ•˜๋Š” ์šฉ๋„๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ ˆ๋””์Šค๋ฅผ ์บ์‹ฑ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ์บ์‹ฑ๊ณผ DB๊ฐ€ ์–ด๋–ค ๊ด€๊ณ„์„ฑ์„ ๊ฐ€์ง€๋Š”์ง€๋ฅผ ๋จผ์ € ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ์กฐํšŒ ๋กœ์ง (Look Aside Cache, Read Path)

์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ(์ฝ๊ธฐ)ํ•  ๋•Œ, ์–ด๋–ค ์ˆœ์„œ๋กœ ๋™์ž‘ํ•˜๋Š”๊ฐ€๋ฅผ ๋งํ•œ๋‹ค. ์ˆœ์„œ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์šฐ์„  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค. ์ด๋•Œ ์„œ๋ฒ„๋Š” ๋ฐ”๋กœ DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์บ์‹œ์— ๋จผ์ € ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‘๋‹ตํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์—†๋‹ค๋ฉด DB์—์„œ ๋จผ์ € ์กฐํšŒํ•œ ํ›„, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•œ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ์ฆ‰, ์ด๋ ‡๊ฒŒ ํ•œ ๋ฒˆ ์บ์‹œ์— ์ €์žฅ๋˜๊ณ  ๋‚˜๋ฉด ๋‹ค์Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด ์“ธ ๋•Œ๋Š” ์บ์‹œ์—์„œ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

2. ์ €์žฅ ๋กœ์ง

์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ(์“ฐ๊ธฐ) ํ•  ๋•Œ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๋งํ•œ๋‹ค. ์ˆœ์„œ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์šฐ์„  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์š”์ฒญํ•œ๋‹ค.

์ด๋•Œ, ์„œ๋ฒ„๋Š” ๋ฐ”๋กœ DB์— ์ €์žฅ์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ , ์šฐ์„  ์บ์‹œ์— ๋จผ์ € ์ €์žฅํ•œ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋น ๋ฅธ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ดํ›„ ๋ณ„๋„์˜ Worker(๋น„๋™๊ธฐ ์ฒ˜๋ฆฌํ•œ๋‹ค.)๊ฐ€ ์บ์‹œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ชจ์•„์„œ DB์— ์ €์žฅํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ์š”์ฒญ ๋งˆ๋‹ค ์ €์žฅํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, DB์—๋Š” ํ•œ ๋ฒˆ์— ๋ฒŒํฌ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ INSERT ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Redis ์„ค์น˜ํ•˜๊ธฐ

redis์˜ ๊ฒฝ์šฐ๋Š” CLI ๋ฐฉ์‹์ด ์žˆ๊ณ  GUI ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‚˜์˜ ๊ฒฝ์šฐ๋Š” ์•„๋ฌด๋ž˜๋„ CLI ๋ฐฉ์‹์ด ๋” ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

์šฐ์„  Redis๋ฅผ ๋กœ์ปฌ์— ์„ค์น˜ํ•ด๋ณด์ž.

Run Redis Open Source on Windows using Docker

๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด, REDIS๋ฅผ window์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” docker๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋„์›Œ์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋ง‰๊ฐ„์„ ์ด์šฉํ•ด์„œ ์™œ REDIS๋ฅผ window์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด docker๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์•Œ์•„๋ณด์ž.

REDIS๋ฅผ window์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์™œ docker๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

๊ณต์‹ REDIS๊ฐ€ ์œˆ๋„์šฐ์šฉ ๋„ค์ดํ‹ฐ๋ธŒ ๋นŒ๋“œ๋ฅผ ๋”์ด์ƒ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Redis ์ž์ฒด๊ฐ€ ์˜ค๋ฒ„์ปค๋ฐ‹ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์— ๋งŽ์€ ๋ถ€๋ถ„์„ ์˜์กดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒฐ๊ตญ docker๋ฅผ ์ด์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ ํ†ตํ•ด Redis์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ณต์‹ ๋ฌธ์„œ์— ์žˆ๋Š”๋Œ€๋กœ, docker๋ฅผ ์ด์šฉํ•ด์„œ REDIS๋ฅผ ๋„์›Œ๋ณด๋„๋ก ํ•˜์ž.

Docker๋ฅผ ํ†ตํ•ด REDIS ๋„์šฐ๊ธฐ

docker run -d --name redis -p 6379:6379 `
  -v C:/developer/GitHub/5th__sinhhanDStudy/redis/redis-docker/redis.conf:/usr/local/etc/redis/redis.conf `
  redis:7 `
  redis-server /usr/local/etc/redis/redis.conf

์ด๋ฅผ ํ†ตํ•ด docker desktop์—์„œ redis ์ตœ์‹  ๋ฒ„์ „ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ด์„œ ์„ค์น˜ํ•ด์ค€๋‹ค

docker exec redis redis-cli -a mySecret! PING  # PONG ๋‚˜์˜ค๋ฉด ์ •์ƒ
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
PONG

์ฐธ๊ณ ๋กœ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

$ docker exec -it redis redis-cli

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด docker container์—์„œ redis-cli๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

$ docker exec -it redis redis-cli
127.0.0.1:6379>

์ด๋ ‡๊ฒŒ local ์„œ๋ฒ„์™€ redis๋ฅผ ์œ„ํ•œ port์— ์—ฐ๊ฒฐ ๋˜์—ˆ๋‹ค๋ฉด, ์ •์ƒ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ด๋‹ค.

image.png

์ฐธ๊ณ ๋กœ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ • ๋˜์—ˆ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค๋ฉด ์ธํ…”๋ฆฌ์ œ์ด์— REDIS ์—ฐ๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ ˆ๋””์Šค ๋„์ปค ์ด๋ฏธ์ง€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด๋ถ€์— ๋‚ด์žฅ๋œ redis.conf (์„ค์ • ํŒŒ์ผ)์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ปค์Šคํ…€ ์„ค์ • (์˜ˆ: ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •, ํฌํŠธ ๋ณ€๊ฒฝ, ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ๋“ฑ)์„ ์ ์šฉํ•˜๋ ค๋ฉด, ๋‚ด ์„ค์ • ํŒŒ์ผ(redis.conf) ์„ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ๊ฐ€์ ธ์™€์•ผํ•œ๋‹ค.

ํŠนํžˆ ๋‚˜์˜ ๊ฒฝ์šฐ๋Š”, REDIS์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฑธ์–ด๋’€๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์Œ ์„ค์ •๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. REDIS์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฑธ๊ณ  ์‹ถ๋‹ค๋ฉด redis.conf์— ๋‹ค์Œ ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

requirepass ~~~~~

์ฐธ๊ณ ๋กœ ๋‹น์—ฐํ•˜์ง€๋งŒ, .conf ํŒŒ์ผ์—๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์„ค์ •๊ฐ’๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€ github์— ์˜ฌ๋ ค์„œ๋Š” ์•ˆ๋œ๋‹ค.

redis.conf์— redis์— ํ•„์š”ํ•œ ์„ค์ • ๊ฐ’๋“ค์„ ๋„ฃ์–ด์คฌ๋‹ค๋ฉด, docker๋กœ redis๋ฅผ ๋„์› ๊ธฐ ๋•Œ๋ฌธ์— Dockerfile์„ ์ด์šฉํ•ด์„œ Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๊ฒฝ๋กœ๋กœ ๋ณต์‚ฌํ•ด์„œ ์„ค์ • ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ Dockerfile์„ ์ž‘์„ฑํ•ด์ค€๋‹ค.

1
2
3
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
๋‚ดํ”„๋กœ์ ํŠธ/
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ redis.conf  โ† ๋‚ด๊ฐ€ ๋งŒ๋“  ์„ค์ • ํŒŒ์ผ (ํ˜ธ์ŠคํŠธ์— ์žˆ์Œ)
โ””โ”€โ”€ src/

๊ฒฐ๊ตญ, ์ด ์œ„์น˜์— ์žˆ๋Š” conf ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ docker ํ™˜๊ฒฝ์— ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ redis ์„ค์ • ํŒŒ์ผ์„ docker ํ™˜๊ฒฝ์— ์ฃผ์ž…ํ•ด์„œ, local๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

$ docker exec -it redis redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

์ฐธ๊ณ ๋กœ REDIS ์—ฐ๊ฒฐ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

docker exec -it redis redis-cli๋ฅผ ํ†ตํ•ด REDIS์— CLI๋กœ ์ ‘๊ทผํ•˜๊ณ , PING์„ ์ž…๋ ฅํ•˜๋ฉด PONG์ด ๋‚˜์˜ค๋Š” ์‹์œผ๋กœ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ‚ค ๋„ค์ด๋ฐ ๊ทœ์น™

REDIS์˜ ๊ฒฝ์šฐ, DB์ฒ˜๋Ÿผ ํ…Œ์ด๋ธ”์ด ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ Key-value์ธ NoSql์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ key๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ๋‚˜๋ˆ  ์ฃผ๋Š” ๊ฒƒ์ด ๊ทœ์น™์ด๋‹ค. (์ผ์ข…์˜ ์ปจ๋ฒค์…˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.)

์˜ˆ๋ฅผ ๋“ค์–ด, userId 123์ธ ์œ ์ €์˜ profile์„ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅํ•œ๋‹ค.

1
user:123:profile

์ด ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ๋งŒ์•ฝ, TTL 10๋ถ„๋™์•ˆ๋งŒ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.

1
set user:123:profile "์œ ์ €ํ”„๋กœํ•„~" EX 600

๊ทธ๋ ‡๋‹ค๋ฉด, ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ์ฒ˜๋Ÿผ user์˜ ํŠน์ • ์ •๋ณด๋ฅผ ๋ฌถ์–ด์„œ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ? ์ •๋‹ต์€, HSET์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

1
HSET user:123 userId 123 name "์˜ค์„ ์ •" hobbies "๋“ฑ์‚ฐ,๋…์„œ" recentMerchants "์Šคํƒ€๋ฒ…์Šค,์ฟ ํŒก" creditLimit 5000000 creditLeft 3200000

์ด๋Ÿฐ์‹์œผ๋กœ HSET์œผ๋กœ ์ €์žฅ์„ ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ €์žฅ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

1
2
3
4
5
6
7
8
user:123 โ†’ {
   "userId": "123",
   "name": "์˜ค์„ ์ •",
   "hobbies": "๋“ฑ์‚ฐ,๋…์„œ",
   "recentMerchants": "์Šคํƒ€๋ฒ…์Šค,์ฟ ํŒก",
   "creditLimit": "5000000",
   "creditLeft": "3200000"
}

์ด ๊ตฌ์กฐ๋Š”, user:123๊ฐ€ key์ด๊ณ , ๊ทธ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’๋“ค์ด SET์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค. HSET์€ Redis 4.0๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ํ•„๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ๋„ฃ๋Š” ๊ฑธ ๊ณต์‹ ์ง€์›ํ•˜๊ณ  ์žˆ์–ด์„œ, ์ด๋Ÿฐ์‹์˜ ๊ตฌ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด ๊ธฐ๋ณธ ์„ค์ • ๋ฐ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…์— ๋Œ€ํ•œ ์ •๋ฆฌ๋Š” ๋์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ์—ฌ๊ธฐ์„œ ๊ณผ์—ฐ ํ•„์š”ํ•œ DATA๋“ค์„ REDIS์— ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ €์žฅํ• ์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ๋‹คโ€ฆ. ์ด ๋ถ€๋ถ„์€ ๋‹ค์ŒํŽธ์—

This post is licensed under CC BY 4.0 by the author.