Redis concept
๐ ๋ชฉ์ฐจ
๊ฐ์
Redis(Remote Dictionary Server)๋ key-value๊ตฌ์กฐ์ NoSQL DB์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ DBMS๋ก key-value DBMS ์ค ๊ฐ์ฅ ์ธ๊ธฐ์๋ค.
Redis์ ๋ชจ๋๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋๋ค.
- Stand alone
- Sentinel
- Cluster
์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์ํ๋ค.
- Key-value, Hash, Set, List, SortedSet
- Expireation
- Key ๋ณ๋ก TTL(Time-To-Live)์ ์ค์ ํด๋๋ฉด redis๊ฐ ์์์ ํด๋น ์์ ์ด ์ง๋ ๋ key๋ฅผ ์ญ์ ํ๋ค.
- Pipelining
- ์ฌ๋ฌ command๋ค์ ๋ชจ์์ ๋ณด๋ธ ํ ํ๋ฒ์ ๋ชจ์์ ๋ฐ์ ์ ์๋ค.
- Pub/Sub
- ํ๋์ client๊ฐ ๊ฐ์ ์ฑ๋์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ client๋ค์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๋ค.
Stand alone
ํ๋์ ์ธ์คํด์ค๋ง์ ๊ฐ๋ํ๋ค.
๋ฐ๋ผ์ HA(High availibilty) ์ฆ, ๊ณ ๊ฐ์ฉ์ฑ์ ์ง์ํ์ง ์๋๋ค.
ํ
์คํธ ์ฉ๋๋ก๋ง ์ฌ์ฉํ๊ณ ์ค ์ด์ํ๊ฒฝ์๋ ์ง์ํ๋ ๊ฒ์ด ์ข๋ค.
Sentinel
- Redis replication๊ณผ ๋ณ๋์ sentinel instance๊ฐ ํ์ํ๋ค.
- Sentinel์ redis master๊ฐ ์๋ ์๋๋ฉด slave ์ค ํ๋๋ฅผ ๋ง์คํฐ๋ก ์๋ ์น๊ฒฉํ๋ค.
- Client๋ redis instance์ ํญ์ ์ฐ๊ฒฐ๋์ด ์์ง๋ง ์ฐ๊ฒฐ ํ redis instance๋ฅผ ์ฐพ๊ธฐ์ํด์๋ redis sentinel์๊ฒ ์์ฒญํด์ผํ๋ค.
- Sentinel instance๋ ์ต์ 3๊ฐ ์ด์์ ํ์๊ฐ๊ฐ ํ์ํ๋ค.(zookeeper ์ด์๋ฐฉ์๊ณผ ๋์ผ)
- ๋ฐ์ดํฐ ์ ์ค์ ๊ฒฝ์ฐ
- master: 1, slave: 2์ ์ํฉ
- network ์ฅ์ ๋ก master๊ฐ slave๋ค๊ณผ ๋ถ๋ฆฌ๋์ด์ง.
- slave ์ค ํ๋๊ฐ master๋ก ์น๊ฒฉ.
- ๋คํธ์ํฌ ์ฅ์ ๋ณต๊ตฌ ์, master๊ฐ 2๊ฐ๊ฐ ๋๊ณ , ์ด ๋์ ๋๊ธฐํ๊ฐ ๋์ง ์์.
- ์ฅ์ ๊ฐ ๋ชจ๋ write์์
์ ์ค
Cluster
- HA์ sharding์ ์ง์ํ๋ค.
- Sharding์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- 2๊ฐ์ ํฌํธ๋ฅด ์ฌ์ฉํ๋ค.(Client ์ฉ, ๋
ธ๋ ๊ฐ ํต์ ์ฉ)
- ์์ ์ ์ด์์ ์ํด์๋ ์ต์ 3๊ฐ์ Master๊ฐ ํ์ํ๋ค.
- Fail over ๋ฐ์ ์ slave ์น๊ฒฉ์ด ์ฆ๊ฐ์ ์ผ๋ก ์ผ์ด๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ ๋ชปํ ์๋ ์๋ค.
- Client๋ cluster ๋ด ์๋ฌด ๋
ธ๋์๊ฒ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค๋ ๋๋ค.
- ํด๋น ๋
ธ๋๊ฐ ํด๋น ์ฟผ๋ฆฌ์ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋ฐ๋ก ๋ฆฌํดํ๋ค.
- ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํด๋น ํค๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋
ธ๋์ ์ ๋ณด๋ฅผ ๋ฆฌํดํ๋ค.
- Client๋ ์ ๋ฌ๋ฐ์ ๋
ธ๋์ ์ ๋ณด๋ก ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ธ๋ค.