โœจ ๋ฐ๋ธŒ์˜ต์Šค: DevOps

Redis ์ฃผ์š” ํŠน์ง• ์ •๋ฆฌ

๐Ÿค ์ค€์ฝฉ์ด 2023. 7. 31. 19:06

๐Ÿค” Redis ๋ž€?

 

Redis ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉฐ, ์ฃผ๋กœ ์บ์‹ฑ, ์„ธ์…˜ ๊ด€๋ฆฌ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋‹ฌ๋ฆฌ, ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋น ๋ฅธ ์†๋„๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

์ „ํ†ต์ ์ธ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋•Œ ๋””์Šคํฌ I/O ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฐ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ €์žฅํ•˜์—ฌ ๋””์Šคํฌ I/O ์ž‘์—…์ด ์ƒ๋žต๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋น ๋ฅธ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์†๋„๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ˜์‘์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š”๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํžˆ ๋งํ•ด, Redis ๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๋น„๊ต์  ๊ฐ€๋ฒผ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ’ก Redis ์ฃผ์š” ํŠน์ง•

 

Redis ๋Š” ์ธ๊ธฐ ์žˆ๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋‹ค์–‘ํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

1. ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ €์žฅ

 

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

 

 

2. ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์ง€์›

 

 

Redis๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ๋Š” ๋ฌธ์ž์—ด(String), ๋ฆฌ์ŠคํŠธ(List), ํ•ด์‹œ(Hash), ์…‹(Set) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ํŠน์ •ํ•œ ์šฉ๋„์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

 

3. ์˜์†์„ฑ ์ง€์›

 

์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ Redis๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ ์žฌ์‹œ์ž‘์ด๋‚˜ ์˜ค๋ฅ˜๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Redis๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์˜์†์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์˜์†์„ฑ ์˜ต์…˜์œผ๋กœ๋Š” RDB(Redis Database File)์™€ AOF(Append-Only File)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • RDB: ์ฃผ๊ธฐ์ ์œผ๋กœ Redis ์˜ ๋ฐ์ดํ„ฐ ์Šค๋ƒ…์ƒท์„ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ์˜์†์„ฑ ๋ฐฉ์‹
  • AOF: Redis ์˜ ๋ชจ๋“  ์“ฐ๊ธฐ ์—ฐ์‚ฐ์„ ๊ธฐ๋กํ•˜๋Š” ๋กœ๊ทธ ํŒŒ์ผ ๋ฐฉ์‹์˜ ์˜์†์„ฑ ๋ฐฉ์‹

 

 

4. ๋†’์€ ๊ฐ€์šฉ์„ฑ

 

Redis๋Š” ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ๋ณต์ œ๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ž๋™์œผ๋กœ ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ์— ๋ณต์ œ๋˜๋ฏ€๋กœ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

5. Pub/Sub ์ง€์›

 

Redis๋Š” Pub/Sub(Publish/Subscribe) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋“ค์€ ํŠน์ • ์ฑ„๋„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰(Publish)ํ•˜๊ณ  ํ•ด๋‹น ์ฑ„๋„์„ ๊ตฌ๋…(Subscribe)ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

6. ํŠธ๋žœ์žญ์…˜ ์ง€์›

 

Redis๋Š” ๋‹จ์ผ ์—ฐ์‚ฐ์—์„œ ์—ฌ๋Ÿฌ ๋ช…๋ น์„ ์›์ž์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ๋‹จ๊ณ„ ์ž‘์—…์„ ์›์ž์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋กค๋ฐฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.