Redis (Remote Dictionary Server)
Redis๋ Key-Value ๊ตฌ์กฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์คํ์์ค ๊ธฐ๋ฐ์ NoSQL DBMS์ด๋ค.
Redis๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ ์๋ ์๊ณ , Cache Server๋ก ์ฌ์ฉํ ์๋ ์๋ค.
โ NoSQL ๋ฐฉ์ DBMS๋ก ๋ถ๋ฅ๋๊ธฐ๋ ํ๊ณ , In Memory ์๋ฃจ์
์ผ๋ก ๋ถ๋ฅ๋๊ธฐ๋ ํ๋ค.
๊ฐ์ฅ ํฐ ํน์ง์ In-Memory ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
์ฑ๊ธ ์ค๋ ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํ ๋ฒ์ ํ๋์ ๋ช
๋ น์ด๋ง์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฒฝ์์ํ๊ฐ ๊ฑฐ์ ๋ฐ์ํ์ง ์๋๋ค.
Redis๋ฅผ ์ฌ์ฉํ๋ ์ด์
โข
Redis์ ๊ฐ์ฅ ํฐ ํน์ง์ธ In-Memory๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐํด์ง๋ ๋ถํ๋ฅผ ๊ฐ์ํ๊ณ ์๋น์ค์ ์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ค.
โข
๋งค๋ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒฝ์ฐ Cache Server๋ก ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณผ ์ ์๊ณ Redis์์ ์ ์ฅ๋ ๊ฐ์ ๊ทธ๋๋ก ๋ฐํํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
โข
Redis์ ๋ฐ์ดํฐ๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์
์ ์ง์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์๊ตฌ ์ฌํญ์ ๋ง๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์
์ ํ์ฉํ ์ ์๋ค.
โข
Redis๋ ์ฑ๊ธ ์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ Atomicํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๊ธฐ๋ ์ข๋ค.
Redis์ ์ฌ๋ฌ ์๋ฃ๊ตฌ์กฐ
Redis์์ ์์ฃผ ์ฐ๋ ์๋ฃ๊ตฌ์กฐ๋ง ์ ๋ฆฌํด ๋ณด์๋ค.
โข
Hash
field-value ์์ ์ฌ์ฉํ ์๋ฃ๊ตฌ์กฐ
key์ ๋ํ filed์ ๊ฐ์๋ ์ ํ์ด ์๋ค.
RDB์ ์ ์ฌ key(USER1)์ RDB ํ๋์ row์ ๊ฐ๋ค.
โข
Set
์ ๋ ฌ๋์ง ์์ ๋ฌธ์์ด์ ๋ชจ์, ์ค๋ณต๋ ์ ์๋ค.
๊ต์งํฉ, ์ฐจ์งํฉ, ํฉ์งํฉ ๋ฑ ์ฐ์ฐ์ ๋ ๋์ค์์ ์ํํ ์ ์๋ค.
โข
Sorted Set
set๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก key ํ๋์ ์ค๋ณต๋์ง ์์ ์ฌ๋ฌ ๋ฉค๋ฒ๋ฅผ ์ ์ฅํ์ง๋ง ๊ฐ๊ฐ์ ๋ฉค๋ฒ๋ SCORE์ ์ฐ๊ฒฐ๋๋ค.
๋ชจ๋ ๋ฐ์ดํฐ๋ SCORE๋ก ์ ๋ ฌ๋๋ฉฐ ์ฃผ๋ก sort๊ฐ ํ์ํ ๊ณณ์ ์ฌ์ฉ๋๋ค.
Redis ์ฌ์ฉ์ ์ฃผ์ํ ์
โข
Redis๋ ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ํ ์์ฒญ์ ์ํํ๋ ๋์ ๋ค๋ฅธ ์์ฒญ์ ๋ฐ์ง ๋ชปํ๋ค.
โฆ
ํ ํด๋ผ์ด์ธํธ๊ฐ ๋ง์ ์๊ฐ์ ์๋ชจํ๋ ์์ฒญ์ ํ ๊ฒฝ์ฐ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
โข
ํ๋์ key์ ๋๋ฌด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ์ง ์๋๋ก ํ๋ค.
โข
TTL timeout ์ ์ ํ ๊ฐ์ ์ค์ ํด์ผ ํ๋ค.
Redis์ ZSet
Redis๋ key-value ํ์
์ ์๋ฃ ์ ์ฅ ํํ๋ฅผ ์ ๊ณตํ๋ค. ๊ฑฐ๊ธฐ์ ์ถ๊ฐ๋ก ZSET์ด๋ผ๋ ํน์ดํ ํํ์ ์ ์ฅ ํํ๋ฅผ ์ ๊ณตํ๋ค.
ZSET์ ์ผ๋ฐ์ ์ธ Set ์๋ฃ๊ตฌ์กฐ์ ์ ์ฌํ์ง๋ง ๊ฐ ์์์ ์ ์(Score)๋ฅผ ํ ๋น ํ ์ ์๊ณ , ์ด ์ ์์ ๋ฐ๋ผ ์๋์ผ๋ก ์ ๋ ฌ๋๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
ZSET์ ํน์ง
โข
์์์ ์ ์๋ก ์ด๋ฃจ์ด์ง ๊ตฌ์กฐ
โฆ
ZSET์ ์์(Member)๋ ๊ณ ์ ํ ์ ์(Score)์ ํจ๊ป ์ ์ฅ๋๋ค. Score๋ double ํ์
์ ์ค์์ด๊ณ ์์์ ์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ค.
โข
์ค๋ณต ์์
โฆ
ZSET ๋ด์ ์์(Member)๋ ์ ์ผํด์ผ ํ๋ฉฐ, ์ค๋ณต๋ ์์(Member)๋ฅผ ์ถ๊ฐํ๋ฉด Score๋ง ๊ฐฑ์ ๋๋ค.
โข
์๋ ์ ๋ ฌ
โฆ
ZSET์ ์์๋ค์ด ์ ์์ ๋ฐ๋ผ ์ ๋ ฌ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๊ฐ ๋ฎ์ ์์ผ๋ก ์ ๋ ฌ๋์ง๋ง ๋์ ์์๋๋ก ์กฐํํ ์๋ ์๋ค.
๋ณดํต RDBMS์์๋ ์ ๋ ฌ์ด ํ์ํ ์ปฌ๋ผ์ index๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ ์ ์์ง๋ง, ํ๋์ ํ
์ด๋ธ์ ๋ฏธ๋ฆฌ ์ธ๋ฑ์ฑ์ ํด์ค ์ ์๋ Clustered Index๋ ํ๋๋ง ์์ฑํ ์ ์๋ค. ๋ค๋ฅธ ์ปฌ๋ผ์ ๋ํด์ ์ธ๋ฑ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ์๋ Non-Clustered Index๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ ์ด๋ ์กฐํํ๋ ์๊ฐ ๋ถํ๊ฐ ์ปค์ง๊ณ ์๋๊ฐ ๋๋ ค์ง๋ ํ์์ด ์ผ์ด๋๋ค.
ํ์ง๋ง, ZSET์ Sorted Set์ ์ด์ฉํ์ฌ ๊ตฌํํ๊ธฐ๋๋ฌธ์ ๋ญํน ๋ฑ ์ธ๋ฑ์ฑ์ด ํ์ํ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋๋ฐ ์๋ง๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.





