Redis
๋ key-value ๊ตฌ์กฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์คํ์์ค ๊ธฐ๋ฐ์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
์ด๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์, ๋ฉ์ธ์ง ๋ธ๋ก์ปค ๋ฑ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ์๋ฒ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์บ์๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด๋ฏธ ์๋๋ฐ ์ Redis๋ฅผ ์ฌ์ฉํ๋๊ฑธ๊น?
๊ทธ ์ด์ ๋ ๋ฐ๋ก ๋น ๋ฅธ ์๋ ๋๋ฌธ์ด๋ค.
Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ
๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์์ด๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ(in-memory)
๋ ์ปดํจํฐ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ RAM์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ ค์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ ค์ ์ฌ์ฉํ๋ฉด SSD๋ HDD ๊ฐ์ ์ ์ฅ๊ณต๊ฐ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
cpu register
-> cpu cache
-> main memory
(DRAM) -> Storage
(SSD, HDD)๊ทธ๋ผ DB๋ฅผ ์ฒ์๋ถํฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ฉด ๋์ง ์์๊น?
์ํ๊น๊ฒ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ธ RAM์ ์ฉ๋์ด ์ ํ์ ์ด๊ณ ํ๋ฐ์ฑ์ด๋ค. ๋ง๊ณ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ๊ธฐ์๋ ์ด๋ ค์์ด ์๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ๋ฉ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ณด์กฐ์ ์ธ ์๋จ์ธ ์บ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ฉ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
key-value
ํ์์ ์ ์ฅ ๋ฐฉ์์ ์ ๊ณตํ๋ฉฐ, ํค ๋ฑ๋ก๊ณผ ์กฐํ์ O(1)์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.cache
๋ก ๋ง์ด ์ฌ์ฉ๋๋ฉฐ persistent ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ DB๋ก์จ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.์ฐ๋ฆฌ๊ฐ ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ key-value ํ์์ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
String์ ์งํฉ์ผ๋ก, ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํ๋์ value์ ๋ฃ์ ์ ์๋ค.
์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์ง ์๋ Set ๊ตฌ์กฐ์ ์ ๋ ฅ Sort๋ฅผ ์ ์ฉํ ๊ตฌ์กฐ๋ก ๋ญํน ๋ณด๋ ์๋ฒ ๊ฐ์ ๊ตฌํ์ ์ฌ์ฉํ ์ ์๋ค.
Array ํ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค. List๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์๊ณผ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋นผ๋ ๊ฒ์ ๋น ๋ฅด์ง๋ง ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ณ ์ญ์ ํ๋ ๊ฒ์ ์ด๋ ต๋ค.
์ฐธ๊ณ
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