4 ๋ถ„ ์†Œ์š”

Redis๋ž€?

Redis๋ž€, Key:Value ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์ €์žฅ์†Œ์ด๋‹ค.
Redis๋Š” Memcached์™€ ๋น„์Šทํ•œ ์บ์‹œ ์‹œ์Šคํ…œ์œผ๋กœ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด์„œ ์˜์†์„ฑ๊ณผ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ฐ™์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-08-30 แ„‹แ…ฉแ„’แ…ฎ 3 04 10

Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์ด๋ฏธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ๋„ Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ ๋””์Šคํฌ์— ์ง์ ‘ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋‹ค ์†์‹ค๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ, ๋งค๋ฒˆ ๋””์Šคํฌ์— ์ ‘๊ทผํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ๋ถ€ํ•˜๊ฐ€ ๋Š˜์–ด ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๊ฐ€ ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๋„์ž…ํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์บ์‹œ ์„œ๋ฒ„๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Redis์ด๋‹ค.

์บ์‹œ ์„œ๋ฒ„(Cache Server)

์บ์‹œ ์„œ๋ฒ„๋Š” Look Aside Cache pattern๊ณผ Write Back pattern ์ด ์žˆ๋‹ค.

Look Aside Cache

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ
  • ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์บ์‹œ ์„œ๋ฒ„์— ๋จผ์ € ํ™•์ธ์„ ํ•˜๊ณ 
  • ์บ์‹œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด DB์— ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์บ์‹œ ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ”๋กœ ๋ฐ˜ํ™˜(Cache Hit) -> ์†๋„๊ฐ€ ๋น ๋ฆ„
  • ์บ์‹œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ ์บ์‹œ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜(Cache Miss)

Write Back

  • ์›น์„œ๋ฒ„๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ ์„œ๋ฒ„์— ์ €์žฅ
  • ์บ์‹œ ์„œ๋ฒ„์— ํŠน์ • ์‹œ๊ฐ„๋™์•ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ
  • ์บ์‹œ ์„œ๋ฒ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅ
  • DB์— ์ €์žฅ๋œ ์บ์‹œ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ

Redis์˜ ํŠน์ง•

Key:Value ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ๊ฐ€ ํ•„์š” ์—†๋‹ค. NoSQL!

๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๋„ ๋น ๋ฅด๊ณ !
String, Lists, Sets, Sorted Sets, Hases ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•œ๋‹ค.
- String: ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ Key, Value ๊ตฌ์กฐ์˜ ํ˜•ํƒœ
- Sets: String์˜ ์ง‘ํ•ฉ์œผ๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ Value์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ํฌ์ŠคํŠธ์˜ ํƒœ๊น…๊ฐ™์€ ๊ณณ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
- Sorted Sets: ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์ง€ ์•Š๋Š” Set ๊ตฌ์กฐ์— ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ, ๋žญํ‚น๋ณด๋“œ ๊ฐ™์€ ์ •๋ ฌ์ด ํ•„์š”ํ•œ ์„œ๋ฒ„ ๊ตฌํ˜„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
- Lists: Array ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค. ์ฒ˜์Œ๊ณผ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…/์‚ญ์ œ๋Š” ๋น ๋ฅด์ง€๋งŒ, ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…/์‚ญ์ œ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.
๊ทธ๋ฆฌ๊ณ  Single Threaded์ด๋‹ค!
- ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ช…๋ น๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธด ๋ช…๋ น์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•ž์— ์žˆ๋Š” ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค.

์ฆ‰, ๊ณ ์„ฑ๋Šฅ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๋กœ์จ ๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ, ํ•ด์‹œ, ์…‹, ์ •๋ ฌ ์…‹ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›ํ•˜๋Š” NoSQL์ด๋‹ค!

Redis์˜ ์˜์†์„ฑ

Redis๋Š” ์˜์†์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋””์Šคํฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•œ๋‹ค.
์ด ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค.

RDB(ShapShottion) ๋ฐฉ์‹

์ˆœ๊ฐ„์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋””์Šคํฌ์— ์ „์ฒด๋ฅผ ์˜ฎ๊ฒจ๋‹ด๋Š” ๋ฐฉ์‹
์ฆ‰, ํŠน์ •ํ•œ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” redis ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค. (๋ฐฑ์—… ์šฉ์ด)

Redis๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š”๋ฐ, Redis ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฅ์• ๋กœ ์ธํ•ด ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ด๋ฉด ์ด์ „์˜ ์ƒํƒœ๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์„ธํŒ…ํ•˜์ง€ ์•Š๋”๋ผ๋„ Redis๋Š” ์ž๋™์œผ๋กœ .rdb๋ผ๋Š” ํ™•์žฅ์ž ํŒŒ์ผ์— ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋„๋ก ์„ธํŒ…๋˜์–ด์žˆ๋‹ค.

RDB ๋ฐฉ์‹์€ ์ผ๋ช… ์Šค๋ƒ…์ƒท์„ ๋œฌ๋‹ค ๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด ๋ง์˜ ์˜๋ฏธ๋Š” ํŠน์ • ์‹œ์ ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. (๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ง์ ‘ ์ฝ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅโ€ฆ)
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, redis ๋ฐ์ดํ„ฐ์˜ versioning ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

.rdb ํŒŒ์ผ์€ AOF ํŒŒ์ผ๋ณด๋‹ค ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์•„ ๋กœ๋”ฉ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.
.rdb ํŒŒ์ผ์€ RDBMS ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹Œ ์Šค๋ƒ…์ƒท ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค.

AOF(Append On File)

Redis์˜ ๋ชจ๋“  write/update ์—ฐ์‚ฐ ์ž์ฒด๋ฅผ ๋ชจ๋‘ logํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.
์ฆ‰, ๋ช…๋ น์ด ์‹คํ–‰๋  ๋•Œ ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ๊ฑฐ์˜ ์—†๋‹ค.

default๋กœ appendonly.aof ํŒŒ์ผ์— ๊ธฐ๋ก๋˜๋ฉฐ, ์กฐํšŒ๋ฅผ ์ œ์™ธํ•œ insert/update/delete ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋งˆ๋‹ค ๊ธฐ๋ก๋œ๋‹ค.
์„œ๋ฒ„๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด, log์— ๊ธฐ๋ก๋œ write/update ์—ฐ์‚ฐ์„ ์žฌ์‹คํ–‰ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ Redis์— ์—…๋ฐ์ดํŠธ ๊ด€๋ จ ๋ช…๋ น์„ ์š”์ฒญํ•œ๋‹ค.
  2. Redis๋Š” ํ•ด๋‹น ๋ช…๋ น์„ AOF์— ์ €์žฅํ•œ๋‹ค.
  3. ํŒŒ์ผ์“ฐ๊ธฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์‹ค์ œ๋กœ ํ•ด๋‹น ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ด์„œ Redis ๋ฉ”๋ชจ๋ฆฌ์— ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ, ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•  ๋•Œ ๋งˆ๋‹ค ๋งค๋ฒˆ ๊ธฐ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์‹œ์ ์ด ์•„๋‹ˆ๋ผ ํ˜„์žฌ์‹œ์ ๊นŒ์ง€์˜ log๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ non-blocking์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

AOF๋Š” logํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ appendํ•˜๊ธฐ ๋•Œ๋ฌธ์— log write ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ, ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.
RDB๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด๋ผ์„œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅ ํ–ˆ์ง€๋งŒ, AOF logํŒŒ์ผ์ด textํŒŒ์ผ์ด๋ฏ€๋กœ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Redis ์‚ฌ์šฉ ์ฃผ์˜์ 

  • ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ, ๊ทธ์— ๋Œ€ํ•œ ์šด์˜ ํ”Œ๋žœ์ด ํ•„์ˆ˜์ ์ด๋‹ค. ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ํŠน์„ฑ์ƒ, ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.
  • ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์˜ ํŠน์„ฑ ์ƒ, ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ช…๋ น๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์š”์ฒญ, ๋ช…๋ น์€ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!

Redis ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ

Redis ์„ค์น˜(install)

Redis๋Š” ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Redis CLI(Command Line Interface)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋จผ์ €, ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ Redis ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ Redis ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์••์ถ• ํ•ด์ œํ•œ๋‹ค.

์••์ถ•ํ•ด์ œ

$ tar xvzf redis-6.2.1.tar.gz

์••์ถ•ํ•ด์ œ ํ›„ ํด๋” ์ด๋™

$ cd redis-6.2.1

Redis ๋นŒ๋“œ

$ make

Redis ์‹คํ–‰

$ src/redis-server

Redis CLI ์‹คํ–‰

$ src/redis-cli

HomeBrew๋กœ ์„ค์น˜ํ•˜๊ธฐ

homebrew ์—…๋ฐ์ดํŠธ

$ brew update

Redis ์„ค์น˜

$ brew install redis

Redis ์‹คํ–‰

$ redis-server

Redis CLI ์‹คํ–‰

$ redis-cli

Redis๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค! ๊ทธ๋ž˜์„œ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹น์—ฐํ•˜๋‹ค!
Redis ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ณ ๋‚˜๋ฉด, Redis ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค!

Redis ๊ธฐ๋ณธ ๋ช…๋ น์–ด

|๋ช…๋ น์–ด| ์„ค๋ช… | |โ€”|โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”| |SET| Key-Value ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. | |GET| Key์— ํ•ด๋‹นํ•˜๋Š” Value๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. | |DEL| Key์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. | |INCR| Key์— ํ•ด๋‹นํ•˜๋Š” Value๋ฅผ 1์ฆ๊ฐ€์‹œํ‚จ๋‹ค. | |DECR| Key์— ํ•ด๋‹นํ•˜๋Š” Value๋ฅผ 1๊ฐ์†Œ์‹œํ‚จ๋‹ค. | |HSET| Hash ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์ •ํ•œ๋‹ค. key, field, value์˜ 3๊ฐ€์ง€ ์ธ์ž๋ฅผ ๋ฐ›์•„ ์ €์žฅ. ์˜ˆ) HSET user id 1234: user๋ผ๋Š” hash์— id๋ผ๋Š” field์™€ 1234๋ผ๋Š” value๋ฅผ ์ €์žฅ | |HGET| key, field์˜ 2๊ฐ€์ง€ ์ธ์ž๋ฅผ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค. ์˜ˆ) HGET user id: user๋ผ๋Š” hash์—์„œ id๋ผ๋Š” field์— ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ์กฐํšŒ | |HMSET| hash ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. key, field1, value1, field2, value2โ€ฆ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ธ์ž๋ฅผ ๋ฐ›์•„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ์˜ˆ) HMSET user id 1234 name John age 25: user๋ผ๋Š” hash์— id, name, age๋ผ๋Š” field์™€ ๊ฐ๊ฐ์— ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. | |HGETEALL| key 1๊ฐœ ์ธ์ž๋งŒ ๋ฐ›์•„ ํ•ด๋‹นํ•˜๋Š” hash์˜ ๋ชจ๋“  field์™€ value๋ฅผ ์กฐํšŒํ•œ๋‹ค. ์˜ˆ) HGETALL user: user๋ผ๋Š” hash์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. |

์ฐธ๊ณ ์ž๋ฃŒ

Redis๋ž€? ๋ ˆ๋””์Šค์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋… (์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ €์žฅ์†Œ)

Redis๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ!

Redis ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•

[REDIS] ๐Ÿ“š ์บ์‹œ ๋ฐ์ดํ„ฐ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• (RDB / AOF)

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ