Redis๋Š” ๋ญ์ง€ ๐Ÿง

Cherryยท2022๋…„ 9์›” 8์ผ
0
post-thumbnail
post-custom-banner

๐Ÿค” Redis(remote dictionary server)๋ž€

์šฐ์•„ํ•œ ๋ ˆ๋””์Šค ์˜์ƒ

Redis๋Š” key-value ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค.
์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ €์žฅ์†Œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ, ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค ๋“ฑ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์„œ๋ฒ„ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์บ์‹œ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ”” DB๊ฐ€ ์žˆ๋Š”๋ฐ Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”๋ฐ ์™œ Redis๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฑธ๊นŒ?
๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ ๋น ๋ฅธ ์†๋„ ๋•Œ๋ฌธ์ด๋‹ค.

Redis๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ €์žฅ์†Œ์ด๋‹ค.

์ธ๋ฉ”๋ชจ๋ฆฌ(in-memory)๋ž€ ์ปดํ“จํ„ฐ์˜ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ ค์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ ค์„œ ์‚ฌ์šฉํ•˜๋ฉด SSD๋‚˜ HDD ๊ฐ™์€ ์ €์žฅ๊ณต๊ฐ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • Memory Hierarchy: cpu register -> cpu cache -> main memory (DRAM) -> Storage (SSD, HDD)
  • cpu์™€ ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ๋น ๋ฅด๊ณ  ์šฉ๋Ÿ‰์ด ์ž‘์œผ๋ฉฐ, ๋ฉ€์–ด์งˆ์ˆ˜๋ก ๋Š๋ฆฌ๊ณ  ์šฉ๋Ÿ‰์ด ํฌ๋‹ค.

๊ทธ๋Ÿผ DB๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?
์•ˆํƒ€๊น๊ฒŒ๋„ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์ธ RAM์€ ์šฉ๋Ÿ‰์ด ์ œํ•œ์ ์ด๊ณ  ํœ˜๋ฐœ์„ฑ์ด๋‹ค. ๋งŽ๊ณ  ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์–ด๋ ค์›€์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฉ”์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ ๋ณด์กฐ์ ์ธ ์ˆ˜๋‹จ์ธ ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์šฉ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“š Redis์˜ ํŠน์ง•

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด์‹œ ๊ธฐ๋ฐ˜์˜ key-value ํ˜•์‹์˜ ์ €์žฅ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋ฉฐ, ํ‚ค ๋“ฑ๋ก๊ณผ ์กฐํšŒ์— O(1)์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•œ๋‹ค.
  • ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ด๋‹ค. ์ฆ‰, ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ช…๋ น๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ cache๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ persistent ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ DB๋กœ์จ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๐Ÿ’ก Redis์˜ ์ž๋ฃŒ๊ตฌ์กฐ

String

์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ key-value ํ˜•์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

Sets

String์˜ ์ง‘ํ•ฉ์œผ๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ value์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

Sorted Sets

์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์ง€ ์•Š๋Š” Set ๊ตฌ์กฐ์— ์ •๋ ฅ Sort๋ฅผ ์ ์šฉํ•œ ๊ตฌ์กฐ๋กœ ๋žญํ‚น ๋ณด๋“œ ์„œ๋ฒ„ ๊ฐ™์€ ๊ตฌํ˜„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Lists

Array ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค. List๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ๊ณผ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ๊ฒƒ์€ ๋น ๋ฅด์ง€๋งŒ ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.

๐Ÿšจ Redis ์‚ฌ์šฉ์— ์žˆ์–ด ์ฃผ์˜ํ•  ์ 

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ๋ฐ˜ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”์–ด ๋ถ€๋ถ„์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์š”์ฒญ์ด๋‚˜ ๋ช…๋ น์€ ํ”ผํ•ด์•ผํ•œ๋‹ค.
  • ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ์— ๋Œ€ํ•œ ์šด์˜ ํ”Œ๋žœ์ด ๊ผญ ํ•„์š”ํ•˜๋‹ค.
  • ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋Œ€๋น„์ฑ…์ด ๊ผญ ํ•„์š”ํ•˜๋‹ค.

์ฐธ๊ณ 
https://redis.io/docs/about/
https://github.com/redis/redis
https://taes-k.github.io/2020/07/23/redis-essential/
https://velog.io/@youngerjesus/Redis-%EB%A5%BC-%EC%8B%A4%EB%AC%B4%EC%97%90-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%A0%84-%EA%BC%AD-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%98%EB%8A%94-%EC%A0%84%EB%9E%B5

profile
ํ˜ธ๊ธฐ์‹ฌ ๋งŽ์€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค ๐Ÿ˜
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€