Redis

Redis

๋น ๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ‚ค ๊ฐ’ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์Šคํ† ์–ด

Redis์˜ ์ •์˜

Key - Value ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ, ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์ €์žฅ์†Œ์ด๋‹ค.

db.engines.com์—์„œ Key-value store์ค‘์— ๊ฐ€์žฅ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค


Redis์˜ ํŠน์ง•

๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•˜๋“œ ๋””์Šคํฌ๋‚˜ SSD์— ์ €์žฅํ•œ๋‹ค.

ํ•˜์ง€๋งŒ Redis๋Š” ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ์ €์žฅํ•ด์„œ ๋””์Šคํฌ ์Šค์บ๋‹์ด ํ•„์š”์—†์–ด ๋งค์šฐ ๋น ๋ฅด๋‹ค.

์บ์‹ฑ๋„ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์— ์ ํ•ฉํ•˜๋ฉฐ ์„ธ์…˜ ๊ณต์œ ๋ฅผ ์œ„ํ•ด ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์—๋„ ํ™œ์šฉ๋œ๋‹ค.


์บ์‹œ ์„œ๋ฒ„์˜ ํŒจํ„ด

์บ์‹œ ์„œ๋ฒ„๋Š” Look aside cache ํŒจํ„ด๊ณผ Write Back ํŒจํ„ด์ด ์กด์žฌํ•œ๋‹ค.

- Look aside cache

1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ

  1. ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ Cache ์„œ๋ฒ„์— ๋จผ์ € ํ™•์ธ

  2. Cache ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์ง€ ์•Š๊ณ  Cache ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ (Cache Hit)

  3. Cache ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ Cache ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜ (Cache Miss)

- Write Back

  1. ์›น์„œ๋ฒ„๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ Cache ์„œ๋ฒ„์— ์ €์žฅ

  2. Cache ์„œ๋ฒ„์— ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ

  3. Cache ์„œ๋ฒ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅ

  4. DB์— ์ €์žฅ๋œ Cache ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ

  • insert ์ฟผ๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์”ฉ 500๋ฒˆ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค insert ์ฟผ๋ฆฌ 500๊ฐœ๋ฅผ ๋ถ™์—ฌ์„œ ํ•œ ๋ฒˆ์— ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋ผ๋Š” ์›๋ฆฌ๋‹ค.

  • ์ด ๋ฐฉ์‹์€ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์ €์žฅ๋˜๊ธฐ ์ „์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋จธ๋ฌด๋ฅด๋Š”๋ฐ ์ด๋•Œ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋‹ค์šด๋œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.


...Redis์˜ ํŠน์ง•

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋•Œ, RAM์€ ํœ˜๋ฐœ์„ฑ์ด๋ผ ์ปดํ“จํ„ฐ๊ฐ€ ๊บผ์ง€๋ฉด ์ •๋ณด๊ฐ€ ๋‹ค ๋‚ ์•„๊ฐ€๋ฒ„๋ฆฐ๋‹ค๋Š” ์•ฝ์ ์ด ์žˆ๋‹ค.

์ด๋ฅผ ๋ง‰๊ธฐ์œ„ํ•œ ๋ฐฑ์—… ๊ณผ์ •์ด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

  1. Snapshot : ํŠน์ • ์ง€์ ์„ ์„ค์ •ํ•˜๊ณ  ๋””์Šคํฌ์— ๋ฐฑ์—….

  2. AOF : ๋ช…๋ น(์ฟผ๋ฆฌ)๋“ค์„ ์ €์žฅํ•ด๋‘๊ณ , ์„œ๋ฒ„๊ฐ€ ์…ง๋‹ค์šด๋˜๋ฉด ์žฌ์‹คํ–‰ํ•ด์„œ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋†“๋Š” ๊ฒƒ.

Redis์˜ ๊ฒฝ์šฐ Key-value๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋Œ€์‹  Redis ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ง€์›ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” String, Sets, Lists, Sorted Sets, Hashes ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค.

๋˜ํ•œ ๋ ˆ๋””์Šค๋Š” Single Threaded์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ช…๋ น๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋™๊ธฐ์ ์œผ๋กœ ๋ช…๋ น๋“ค์ด ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š”๋ฐ, get, set ๋ช…๋ น์–ด์˜ ๊ฒฝ์šฐ ์ดˆ๋‹น ์ฒ˜๋ฆฌ์†๋„๊ฐ€ 10๋งŒ๊ฐœ๋ฅผ ๋„˜์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๋Š” ์—†๋‹ค.


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

์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ์— ๋Œ€ํ•œ ์šด์˜ ํ”Œ๋žœ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.

์ธ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐฉ์ง€ํ•  ๊ฒƒ์ธ์ง€?

๋˜ํ•œ, ๋‹น์—ฐํ•œ ์–˜๊ธฐ์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

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

Last updated