Search
Duplicate

redis

1. redis๋ž€?

redis๋ž€ย 'Remote Dictionary Server'์˜ย ์•ฝ์ž๋กœ,ย ๊ณ ์„ฑ๋Šฅ์˜ย Key-Valueย ์Šคํ† ์–ด์ž…๋‹ˆ๋‹ค.ย ์ด๋Š”ย ๋ฉ”๋ชจ๋ฆฌย ๊ธฐ๋ฐ˜์˜ย ๋ฐ์ดํ„ฐย ๊ตฌ์กฐย ์„œ๋ฒ„๋กœ์„œ,ย ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค,ย ์บ์‹œ,ย ๋ธŒ๋กœ์ปค(Pub/Sub๋ชจ๋ธ์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ์ด๋ฒคํŠธ์•Œ๋ฆผ ๋“ฑ)ย ๋“ฑ์˜ย ์—ญํ• ์„ย ์ˆ˜ํ–‰ํ• ย ์ˆ˜ย ์žˆ๋‹ค.๋น ๋ฅธย ์‘๋‹ตย ์‹œ๊ฐ„๊ณผย ๋†’์€ย ํ™•์žฅ์„ฑ์„ย ํ•„์š”๋กœย ํ•˜๋Š”ย ๋‹ค์–‘ํ•œย ์„œ๋น„์Šค์—์„œย ๋„๋ฆฌย ์‚ฌ์šฉ

2. redis์˜ collection

redis ๋Š” ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•œ๋‹ค.

3. SingleThread

redis๋Š” ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๊ณ  ์ž‘์—…์„ ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋˜ย Redis 4.0๋ถ€ํ„ฐ๋Š”ย 'Redisย Module'์„ย ์ง€์›ํ•˜์—ฌ,ย ์‚ฌ์šฉ์ž๊ฐ€ย ๋ณ„๋„์˜ย ์Šค๋ ˆ๋“œ๋ฅผย ์ƒ์„ฑํ•ด์„œย ์‚ฌ์šฉํ• ย ์ˆ˜ย ์žˆ๊ฒŒย ๋˜์—ˆ๊ณ , Redis 6.0๋ถ€ํ„ฐ๋Š”ย 'IO Threading'ย ๊ธฐ๋Šฅ์„ย ๋„์ž…ํ•˜์—ฌ,ย ๋„คํŠธ์›Œํฌย I/Oย ์ž‘์—…์„ย ๋ณ‘๋ ฌ๋กœย ์ฒ˜๋ฆฌํ• ย ์ˆ˜ย ์žˆ๊ฒŒย ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ย  ์ด๋Ÿฐย ๊ธฐ๋Šฅ์„ย ํ†ตํ•ดย Redis๋Š”ย ์‹ฑ๊ธ€ย ์Šค๋ ˆ๋“œย ๋ชจ๋ธ์˜ย ์žฅ์ ์„ย ์ตœ๋Œ€ํ•œย ์‚ด๋ฆฌ๋ฉด์„œ,๋ฉ€ํ‹ฐย ์Šค๋ ˆ๋“œ์˜ย ์ด์ ๋„ย ๊ฐ€์ ธ๊ฐ€๊ณ ย ์žˆ์Šต๋‹ˆ๋‹ค.

4. replication, clutering

Redis์˜ ๋ณต์ œ(Replication)์™€ ํด๋Ÿฌ์Šคํ„ฐ๋ง(Clustering)์€ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ „์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
1.
๋ณต์ œ(Replication): Redis์˜ ๋ณต์ œ ๊ธฐ๋Šฅ์€ ํ•œ ๊ฐœ์˜ Redis ์„œ๋ฒ„(์ฃผ๋กœ '๋งˆ์Šคํ„ฐ'๋ผ ๋ถˆ๋ฆผ)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ์˜ Redis ์„œ๋ฒ„('์Šฌ๋ ˆ์ด๋ธŒ'๋ผ ๋ถˆ๋ฆผ)์— ๋ณต์‚ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์Šฌ๋ ˆ์ด๋ธŒ๋Š” ๋งˆ์Šคํ„ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณต์ œ๋ฐ›์•„, ๋งˆ์Šคํ„ฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ฑฐ๋‚˜, ์ฝ๊ธฐ ์š”์ฒญ์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋Š” Redis ์„ค์ •์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์ด๋‚˜ ์žฅ์•  ์ƒํ™ฉ์—์„œ๋„ ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
2.
ํด๋Ÿฌ์Šคํ„ฐ๋ง(Clustering): Redis ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Redis ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„๋กœ ๋ฌถ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Redis์˜ ๋ฐ์ดํ„ฐ์™€ ์ฒ˜๋ฆฌ๋Šฅ๋ ฅ์„ ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„ํ• (Sharding)ํ•˜์—ฌ ์ €์žฅํ•˜๋ฏ€๋กœ, ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ์š”์ฒญ์˜ ์–‘์„ ๋„˜์–ด์„œ๋Š” ํฐ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, Redis ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ž๋™ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ๋…ธ๋“œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ณ„์† ์ž‘๋™ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
์ดย ๋‘ย ๊ฐ€์ง€ย ๊ธฐ๋Šฅ์€ย ์„œ๋กœย ๋…๋ฆฝ์ ์œผ๋กœย ์‚ฌ์šฉํ• ย ์ˆ˜ย ์žˆ์ง€๋งŒ,ย ๋งŽ์€ย ๊ฒฝ์šฐ์—ย ํ•จ๊ป˜ย ์‚ฌ์šฉํ•˜์—ฌ,ย ๋Œ€๊ทœ๋ชจ์˜ย ๋ฐ์ดํ„ฐ๋ฅผย ์•ˆ์ •์ ์œผ๋กœย ์ฒ˜๋ฆฌํ•˜๊ณ ,ย ๋†’์€ย ๊ฐ€์šฉ์„ฑ ์„ย ๋ณด์žฅํ•˜๋Š”ย ๋ฐย ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.ย ์˜ˆ๋ฅผย ๋“ค์–ด,ย ํด๋Ÿฌ์Šคํ„ฐ์˜ย ๊ฐย ๋…ธ๋“œ๋Š”ย ๋ณต์ œย ๊ธฐ๋Šฅ์„ย ์‚ฌ์šฉํ•˜์—ฌย ์ž์‹ ์˜ย ๋ฐ์ดํ„ฐ๋ฅผย ๋‹ค๋ฅธย ๋…ธ๋“œ์—ย ๋ณต์ œํ•จ์œผ๋กœ์จ, ๋…ธ๋“œย ์žฅ์• ์—ย ๋Œ€๋น„ํ• ย ์ˆ˜ย ์žˆ์Šต๋‹ˆ๋‹ค.
Redis ์— ๋Œ€ํ•ด์„œ (์„ธ์…˜, ์บ์‹œ, ํด๋Ÿฌ์Šคํ„ฐ, ์ฟผ๋ฆฌํŠœ๋‹)
๋ชฉ์ฐจ ์ด ๊ธ€์€ Redis7, SpringBoot2.7 ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Redis ๋ž€? ๋ ˆ๋””์Šค๋Š” ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์˜คํ”ˆ์†Œ์Šค ์ธ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ์ด๋‹ค. ๋†’์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ๋‹ค์–‘ํ•œ ๊ณณ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋‹ค๋ฅด๊ฒŒ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ String, Set, Map, Sorted Map ๋“ฑ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์œ ์—ฐ์„ฑ์ด ์ข‹์•„ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ , ํ˜„๋Œ€์ ์ธ ์„œ๋ฒ„ ๊ตฌ์กฐ์—์„œ ์„ธ์…˜ ๊ด€๋ฆฌ๋‚˜ ์บ์‹œ๋Š” ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ตฌ์„ฑ์š”์†Œ๋กœ ๋งŽ์ด ์ด์šฉ๋œ๋‹ค. ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ์ ์  ๋” ์†๋„๊ฐ€ ๋นจ๋ผ์ ธ์•ผํ•˜๊ณ , ๋งŽ์€ ์œ ์ €์˜ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹น ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ถ„์‚ฐํ™˜๊ฒฝ์—์„œ ์บ์‹œ, ์„ธ์…˜๊ด€๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ด๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์—๋งŒ ์ง‘์ค‘ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ์ฝ๊ธฐ๋Š” ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ , ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊ฒฝ์šฐ ๊ณ„์ธต์ด ๊ตฌ๋ถ„๋˜์–ด..
[์™œ Redis๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€?] 03. Redis๋ž€?
Redis์— ์•Œ์•„๋ณด๊ธฐ ์ „์— Cache์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ  ๊ฐ€์ž. Cache Cache๋ž€ ๋‚˜์ค‘์— ์š”์ฒญํ•  ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘” ํ›„ ๋น ๋ฅด๊ฒŒ ์„œ๋น„์Šคํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ๋ฏธ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‚˜์ค‘์— ์š”์ฒญ์ด ์˜ค๋ฉด ๊ทธ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ DB ๋˜๋Š” API๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  Cache๋ฅผ ์ ‘๊ทผํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์ด๋Ÿฌํ•œ ์บ์‹œ๊ฐ€ ๋‚˜์˜จ ๋ฐฐ๊ฒฝ์—๋Š” ํŒŒ๋ ˆํ†  ๋ฒ•์น™์ด ์žˆ๋‹ค. ํŒŒ๋ ˆํ†  ๋ฒ•์น™์ด๋ž€ 80%์˜ ๊ฒฐ๊ณผ๋Š” 20%์˜ ์›์ธ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ฆ‰, ์บ์‹œ๋Š” ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์„œ๋น„์Šค๋ฅผ ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” 20%๋งŒ ์บ์‹ฑํ•จ์œผ๋กœ์จ ์ „์ฒด์ ์œผ๋กœ ํšจ์œจ์„ ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™ธ์—๋„ ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์˜ ์บ์‹œ ๊ฐœ๋…์œผ๋กœ ์†๋„๊ฐ€ ๋А๋ฆฐ ์žฅ์น˜์™€ ๋น ๋ฅธ ์žฅ์น˜์—์„œ ์†๋„ ์ฐจ์ด๋กœ ์ธํ•œ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. ์‹ค..