Posts
Q&A
๋ ๋์ค๋ก ์ฌ๊ณ ๊ด๋ฆฌ
์๋ ํ์ธ์! ๋ ์ง๋ฌธ ๋ชจ๋ ๊ฐ์ ํต์ฌ์ ๋ด๊ณ ์๋ค์. Redis์ ์ฌ๊ณ ๊ฐ์์ DB ๋ฐ์์ ์ ํฉ์ฑ์ ๋ํ ๋ฌธ์ ๋ค์. ๊ฐ์ฅ ์ฌํํ ๊ตฌ์กฐLua Script๋ก Redis ์์ ์ ์ฒ๋ฆฌํ ๋ค ๋ฐ๋ก DB์ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ด์.๋ค๋ง ์ด ๊ตฌ์กฐ๋ Redis ์ฑ๊ณต + DB ์คํจ ์ ์ ํฉ์ฑ์ด ๊นจ์ง๋ ๋ฌธ์ ๊ฐ ์์ด์. ๊ทธ๋์ ๋ง์ํ์ ๋๋ก ์ค๊ฐ์ ํ๋ฅผ ๋๋ ์ ๊ทผ์ด ์ข์ต๋๋ค. (1๋ฒ ์ง๋ฌธ) Redis Stream + Worker + DB์ ์ํ์ ๊ตฌ์กฐ๋ ๊ด์ฐฎ์ ์ ๊ทผ์ ๋๋ค. ๋ค๋ง Worker ์คํจ ์ ์ฌ์ฒ๋ฆฌ ์ ๋ต์ ๊ฒํ ํด ์ฃผ์ธ์.์ฒ๋ฆฌ ์๋ฃ โ XACK๋ฏธ์ฒ๋ฆฌ ๋ฉ์์ง ํ์ธ ๋ฐ ์ฌ์ฒ๋ฆฌ โ XPENDING์ค๋ณต์ฒ๋ฆฌ์ ๋ํ ๋ฉฑ๋์ฑ ๋ณด์ฅํ ๊ฐ์ง ๋, Redis Stream์ ์ธ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ด๋ผ Redis ์ฅ์ ์ ๋ฐ์ดํฐ ์ ์ค ๊ฐ๋ฅ์ฑ์ด ์์ด์. ํ๋ก๋์ ํ๊ฒฝ์ด๋ผ๋ฉด AOF ์ค์ ์ ๋ฐ๋์ ํ์ฑํํ์ธ์. (2๋ฒ ์ง๋ฌธ) Kafka ์ถ๊ฐ1๋ฒ ๊ตฌ์กฐ์์ Worker โ DB ์ฌ์ด์ Kafka๊ฐ ์ถ๊ฐ๋ ๊ตฌ์กฐ๋ค์. Kafka๋ฅผ ์ถ๊ฐํ๋ฉด Consumer๋ฅผ ์ฌ๋ฌ ๊ฐ ๋์ ์ฒ๋ฆฌ๋์ ๋๋ฆด ์ ์์ง๋ง ์ด์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํฉ๋๋ค. ํธ๋ํฝ์ด ์ถฉ๋ถํ ์ปค์ก์ ๋ or ์๋ฒฝํ ๋ด๊ตฌ์ฑ์ด ํ์ํ ๋ ๋์ ํ๋ ๊ฑธ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 35
Q&A
Lock ํด์ ๋ฌธ์ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. ๐release_lock์ identifier ๋น๊ต ๋ก์ง์ "์๊ณ์์ญ์ ๋ํ ์์ ์์ ์๊ฐ์ด ๋ฝ์ TTL์ ์ด๊ณผํ์ ๋" ๋ฅผ ์ ์ ๋ก ํ ๋ฐฉ์ด ์ฝ๋์ ๋๋ค.๋ฝ์ ๋จผ์ ์ก์ A๊ฐ ์๊ณ์์ญ์ ๋ํ ์์ ์ด ์์๋ณด๋ค ๊ธธ์ด์ ธ ๋ฝ์ TTL์ด ๋จผ์ ๋ง๋ฃ๋์ด ๋ฒ๋ฆฌ๋ฉด, ๋ฝ์ด ์๋ ์ญ์ ๋๊ณ ๋ค๋ฅธ ์์ฒญ B๊ฐ ์๋ก ๋ฝ์ ํ๋ํ ์ ์์ต๋๋ค. ์ด ์์ ์ A๊ฐ ์์ ์ ๋๋ด๊ณ ์๋ฌด ๊ฒ์ฆ ์์ด DEL์ ํธ์ถํ๋ฉด B์ ๋ฝ์ ์ง์๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์๊น๋๋ค. ๊ทธ๋์ identifier๋ฅผ ๋น๊ตํ ๋ค ์ญ์ ํ๋ฉด ์ด๋ฅผ ๋ง์ ์ ์์ต๋๋ค.๋ํ GET โ DEL ์ฌ์ด์ TTL์ด ๋ง๋ฃ๋๊ณ ๋ค๋ฅธ ์์ฒญ์ด ๋ฝ์ ๊ฐ์ ธ๊ฐ๋ ์ํฉ์ด ๋ผ์ด๋ค ์ ์๊ธฐ ๋๋ฌธ์, Lua ์คํฌ๋ฆฝํธ๋ก ์์์ ์ผ๋ก ๋ฌถ์ ๊ฒ์ ๊ถ์ฅ๋๋ฆฐ ๊ฒ์ด๊ณ ์.์ฐธ๊ณ ๋ก ๊ฐ์์ ์ํ ์ฝ๋์์๋ ์์ ์๊ฐ(sleep(2))์ด ๋ฝ์ TTL(5์ด)๋ณด๋ค ์งง์์ ์ด์ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํ์ง๋ ์๊ฒ ์ง๋ง, ์ค๋ฌด์์๋ DB ์๋ต ์ง์ฐ, ์๋ฒ ๋ถํ ๋ฑ์ผ๋ก ์์ ์๊ฐ์ด ์์์ ์ด๊ณผํ๋ ์ผ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋์ TTL์ ์์ ์์ ์๊ฐ๋ณด๋ค ์ถฉ๋ถํ ํฌ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ฝ๋๋ ๋ถ์ฐ๋ฝ์ ๊ธฐ๋ณธ ์๋ฆฌ ์ดํด ์ง์ ๊ตฌํํ ์ํ์ด๊ณ ์์ค์ ์ค๋ฌด์์๋ Lua ์์์ฑ, ๋ค์ค ๋ ธ๋ ์ง์(Redlock) ๋ฑ์ ๊ณ ๋ คํด Redisson(Java), redlock-py(Python) ๊ฐ์ ๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ์ ๊ฒํ ํ์๊ธธ ๊ถ์ฅํฉ๋๋ค.์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค. ๐
- Likes
- 0
- Comments
- 2
- Viewcount
- 39
Q&A
๋ ๋์ค๋ก ๋๊ธฐํ ๊ตฌํ ์ง๋ฌธ
์๋ ํ์ธ์. ๐์ ํฌ๋ธ ์์์ ๋ณด์ จ๊ตฐ์.๋ฐฑ๋จ์ ์ค์ผ์ค๋ฌ๊ฐ ๋๊ธฐ์ด(Sorted Set)์์ ์ ์ฅ์ํฌ ์ ์๋ ์ ๋งํผ ๋ฝ์์ Active User์ ๋ฃ์ต๋๋ค. Active User์ ์๋ ์ ์ ๋ ์ ์ฅ ํ๊ฐ๋ฅผ ๋ฐ์ ๊ฑฐ์ฃ . ์ด ์์ ๋ถํฐ ์๋งค ํ์ด์ง๋ก ๊ฐ์ ์ถ๋ฐ์๊ฐ๊ณผ ์ข์์ ๋ฑ์ ์ ํํด์ ์๋งค๋ฅผ ์งํํ ์ ์๊ฒ ๋ฉ๋๋ค. (์ด๋ Active User๋ ๊ฐ๋ณ ์ ์ ์ ๋ํด TTL์ ์ค์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ Redis์ String์ด ์ ํฉํฉ๋๋ค. ํค ์์: active:user:{uuid})๊ทธ๋ฆฌ๊ณ ๋์, ์ ์ ๊ฐ ์ต์ข ์๋งค ๋ฒํผ์ ํด๋ฆญํ๋ฉด (์ฌ๋ฌ ์ ์ ๊ฐ ๋์์ ์์ฒญ์ ํ ์ ์๊ธฐ ๋๋ฌธ์) ํด๋น ์๊ฐ์ ๋จ์ ์ข์์๋ฅผ Redis์ Lua Script๋ Functions๋ฅผ ์ฌ์ฉํด ์์์ ์ผ๋ก ๊ณ์ฐํด์ ์ต์ข ์๋งค ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.(์๋งค์ฒ๋ฆฌ๋ RDB๋ก ์ต์ข ์ฐ๊ธฐ ์์ ์ ํ ์๋ ์๊ณ , MQ๋ก ๋ณด๋ผ ์๋ ์์ต๋๋ค)ํ์ดํ ์ ๋๋ค. ๐
- Likes
- 0
- Comments
- 2
- Viewcount
- 73
Q&A
API LIMIT
์๋ ํ์ธ์.๐1. Rate Limiting๊ณผ ์ด๋ทฐ์ง๋ถ๋ถ์ ์ผ๋ก๋ ๋น์ทํด ๋ณด์ด์ง๋ง, ์ด ๋์ ๋ชฉ์ ๊ณผ ๋์์ด ๋ค๋ฆ ๋๋ค.a. Rate Limiting์ฌ์ฉ๋ ์ ํ๋ฆฌ์์ค ๋ณดํธ์ ๊ณต์ ํ ์ฌ์ฉ์ด ์ฃผ ๋ชฉ์ ์ ๋๋ค. ์ฆ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ์ง ๋ง๋ผ๋ ๊ฑฐ์ฃ .b. Abusing ํ์ง์ ์์ ์ธ ํ์ ํ์ง๋จ์ํ ํ์ ์ด๊ณผ๋ฅผ ๋์ด ํธ์ถ ํจํด, ์๋, ๋ถํฌ ๋ฑ์ ํจ๊ป ๋ด์ผ ํฉ๋๋ค.๊ทธ๋์ ์ผ๋ฐ์ ์ผ๋ก Rate Limiting์ ๋จผ์ ์ ์ฉํ๊ณ , ์ฌ์ฉ๋์ ์ด๊ณผํ๋ฉด์ ํน์ ํ ์ด์ ํธ์ถ ํจํด์ด ๋ณด์ด๋ฉด ์ด๋ทฐ์ง ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ํ๋ ํํ๋ก ๊ตฌํํฉ๋๋ค. ์ฆ Rate Limiting์ 1์ฐจ ๋ฐฉ์ด์ ์ด๊ณ Abusing ํ์ง๋ ๊ทธ ๋ค์ ๋ ์ด์ด๋ก ์ฒ๋ฆฌํ๋ ๊ฒ ์ผ๋ฐ์ ์ ๋๋ค. ๋ฐ๋ผ์ ์ด ๋์ ์์ ํ ๋์ผํ๊ฒ ๊ฐ์ ธ๊ฐ์ง๋ ๋ง์๊ณ ๊ณ์ธต์ ๋ถ๋ฆฌํด์ ์ค๊ณํ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.2. API Rate Limiting ์ค๋ฌด ์๊ณ์น๋ง์ํ์ ๋๋ก ๋ณดํต ์ธ๊ฐ์ด ์ด๋น ๋น ๋ฅด๊ฒ ํด๋ฆญํ ์ ์๋ ๊ฒฝํ์ ์ต๋์น(๋๋ฉ์ธ ์์ ๊ธฐ๋ฐ)๋ฅผ ์ฐ์ ๊ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ์ ์์ ์ธ ์ ์ ์ ํด๋น ์ก์ ๋น๋๋ฅผ ๋ณด๊ณ ์กฐ์ ํ ์ ์์ต๋๋ค.(์ ์์ ์ธ ์๋๋ฅผ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ๋งํ๋ฉด ์ ๋๋๊น์) ๊ทธ๋ฆฌ๊ณ '์ข์์'์ ๊ฐ์ ๋น๊ต์ ๊ฐ๋ฒผ์ด ์ก์ ์ ์ข ๊ด๋ํ๊ฒ ์ก๊ธฐ๋ ํ์ง๋ง, ์ค์ํ ํ์์ผ ๊ฒฝ์ฐ ์ข ๋ ํ์ดํธํ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.ํ์ดํ ์ ๋๋ค. ๐
- Likes
- 0
- Comments
- 1
- Viewcount
- 51
Q&A
Redis์ Kafca์ Pub/Sub ์ฐจ์ด
์๋ ํ์ธ์. ๐๋๊ท๋ชจ ์ฒ๋ฆฌ์ผ ๊ฒฝ์ฐ 'Redis ์ข์์ ์ฆ๊ฐ โ Kafka ๋ฉ์์ง ๋ฐํ โ MySQL ์ ๋ฐ์ดํธ'๋ ์ค๋ฌด์ ์ผ๋ก ์ ์ค๊ณ๋ ํจํด์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.Redis์ Pub/Sub๊ณผ Kafka์ ๋ฉ์์ง ๋ฐ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฐจ์ด์ ์ ๋ฉ์์ง ์ ์ค ๊ฐ๋ฅ์ฑ์ ๋๋ค. Redis์ Pub/Sub์ ์์ ํ ์ค์๊ฐ ์๋ฆผ ์ฑ๊ฒฉ์ผ๋ก Publishํ ๋ ๋ฐ์ง ๋ชปํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ ๋ฐ๋ก ์ ์ค๋ฉ๋๋ค. ์ฆ ํน์ ์ฅ์ ์ํฉ์์ MySQL์ ์ข์์ ์์น๊ฐ ์ผ์นํ์ง ์์ ์ ์๋ ๊ฑฐ์ฃ . ๋์ Kafka๋ ๋ฉ์์ง๊ฐ ์ ์ค๋์ง ์๊ณ ์ ๋ฌ์ ๋ณด์ฅํฉ๋๋ค.๋ํ ํธ๋ํฝ์ด ํญ๋ฐ์ ์ผ๋ก ๋ชฐ๋ฆฌ๋ ์ํฉ์์ ๋ฉ์์ง๋ฅผ ๋ฒํผ๋งํด ๋๊ณ , MySQL์ด ์ฒ๋ฆฌ ๊ฐ๋ฅํ ์๋๋ก ๋ฉ์์ง๋ฅผ ์๋นํ ์ ์๊ฒ ํด ์ค๋๋ค.์ ๋ฆฌํ์๋ฉดRedis๋ ๋น ๋ฅธ ์๋(์นด์ดํฐ ์ฆ๊ฐ), Kafka๋ ์ ๋ขฐ์ฑ ์๋ ์ฒ๋ฆฌ(MySQL ๋ฐ์ ๋ณด์ฅ)์ ๋ฒํผ๋ง ์ผ๋ก ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.์ฐธ๊ณ ๋ก Redis์ Pub/Sub ๋ง๊ณ Streams๋ผ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ง์น Kafka์ ๊ฐ์ด ๋ฉ์์ง ์์์ฑ๊ณผ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ง์ํฉ๋๋ค. ์๊ท๋ชจ ํธ๋ํฝ์ด๋ผ๋ฉด Redis Streams๋ก Kafka๋ฅผ ๋์ฒดํ ์๋ ์์ต๋๋ค. ์ด๋ด ๊ฒฝ์ฐ ์ํคํ ์ฒ๊ฐ ์ข ๋จ์ํด ์งํ ๊ตฌ์.(Redis๋ก ์๋์ ๋ฉ์์ง ๋ ๋ค ์ฒ๋ฆฌ)๊ทธ๋ฌ๋ ์ญ์ ๋๊ท๋ชจ ํธ๋ํฝ ํ๊ฒฝ์ด๋ผ๋ฉด Kafka๊ฐ ๋ ์ ํฉํ ์ ํ์ ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 58
Q&A
์บ์ ๋ฌดํจํ
์๋ ํ์ธ์. ๐์ผ๋ฐ์ ์ผ๋ก ๊ธฐ์กด ์บ์๋ฅผ ์ญ์ ํ๋ ๋ฐฉ์์ด ๋ ๊น๋ํด์ ์ค๋ฌด์์ ์ ํธํ๋ ๋ฐฉ์์ ๋๋ค.์๋์ ๊ฐ์ ์ด์ ์ ๋๋ค.๊ธฐ์กด ์บ์ ์์ ์, GETํ๊ณ ์์ ํ๊ณ SET ์์๋ก ์ฒ๋ฆฌ์ ๋ฐ๋ฅธ ์์์ฑ ๋ณด์ฅ -> ๊ฐฑ์ ๋ก์ง ๋ณต์ก(์ญ์ ์ ๋นํด) ์ฌ์ฉ์ ์ด๋ฆ์ด ์ฌ๋ฌ ์บ์์ ์์ ๊ฒฝ์ฐ ์ผ๋ถ ์บ์ ์์ ๋๋ฝ -> ๋ถ์ผ์น ๊ฐ๋ฅ์ฑ ์ฌ์ฉ์ ์ด๋ฆ ๋ณ๊ฒฝ์ ๋น๋๊ฐ ๋ฎ์ ์ด๋ฒคํธ๋ผ ์บ์ ๋ฏธ์ค ์ํค๊ณ DB์กฐํ๋ก ๋ค์ ๊ฐฑ์ ํ๋๊ฒ์ด ๊ทธ๋ฆฌ ํฐ ๋ถ๋ด์ด ๋์ง ์๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์์ ์ ๋จ์์ฑ๊ณผ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ ์ธก๋ฉด์์ ์ญ์ ํ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.๊ทธ๋ฌ๋ ๋ง์ผ ์บ์ ์ฌ์์ฑ ๋น์ฉ์ด ๋งค์ฐ ํฌ๊ณ ์บ์ ๋ฏธ์ค์ ๋ฐ๋ฅธ ์๋ ์ ํ๊ฐ ์์ฃผ ๋ฏผ๊ฐํ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ธฐ์กด ์บ์ ์์ ์ ๊ณ ๋ คํด ๋ณผ ์ ์์ ๊ฑฐ ๊ฐ์ต๋๋ค. ์ฐํด์๋ ์ด์ฌํ ํ์๋ค์. ํ์ดํ ์ ๋๋ค. ๐
- Likes
- 0
- Comments
- 2
- Viewcount
- 43
Q&A
SP๋ฅผ ์์ง๋ ์ฌ์ฉํ๋์?
์๋ ํ์ธ์. ๐์ผ๋ถ ๋๋ฉ์ธ, ์์ ์์ญ์์ ์ฌ์ ํด SP๊ฐ ํ์ฉ๋๋ ๊ฑธ๋ก ์๊ณ ์์ต๋๋ค. ๊ดํ, ๊ฐ์ฌ์ถ์ , ๋์ฉ๋ ์ฒ๋ฆฌ, ๋ณด์ ๋ฑ์ ๊ฐ๊ธฐ ์๋ก ๋ค๋ฅธ ๋์ฆ๊ฐ ์์ ๊ฒ์ ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 59
Q&A
๋๋ฌด ํฅ๋ฏธ์ง์งํฉ๋๋ค..
์๋ ํ์ธ์. Redis๋ฅผ RDBMS๋ฅผ ๋ณด์ํ๋ ๋๊ตฌ๋ก ์ ํ์ฉํ์๋ฉด ์ค๋ฌด์ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ํนํ ๋์ฉ๋ ์๋น์ค์ผ ์๋ก ๊ทธ ์ง๊ฐ๊ฐ ๋์ฑ ๋ฐํ๋ฉ๋๋ค.๊ฐ์ ์๊ฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๐
- Likes
- 1
- Comments
- 2
- Viewcount
- 60
Q&A
์์๊ฐ ๋๋ฅ ์ผ ๋์ ์ฒ๋ฆฌ์ ๋ํด ์ง๋ฌธ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. ์ค๋ฌด์์ ๋ถ๋ชํ ๋งํ ์ข์ ์ง๋ฌธ ์ฃผ์ จ๋ค์. ๐์ฌ๋ฌ ๋ฐฉ์์ด ์์ ์ ์๊ฒ ์ต๋๋ค.1. ๊ณต๋ ์์๋ก ์ฒ๋ฆฌํ๋ฉด ํ์ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ด๋น.(์: ๋ฌ์ฑ ์๊ฐ, ๋๋ค์ ๊ฐ๋๋ค์ ๋ฑ)๊ฐ์ฅ ์ฌํ. ์์ . ๊ถ์ฅ. (ZSet์ ์์์ ์ํฅ์ ์ฃผ๋๊ฒ ์๋๋ ๊น๋ํจ)(๊ณต๋์์๋ก ํ๊ณ ํ๋ฉด ํ์๋ง ๋ค๋ฅด๊ฒ ํด๋ ๋๋ถ๋ถ์ ์๋น์ค์์ ํ์ฉ ๊ฐ๋ฅ) 2. ๋จผ์ ๋ฌ์ฑํ ์ฌ๋์ ์์ ์์๋ก์ ์ + ์๊ฐ์ ํ๋์ score๋ก ์ธ์ฝ๋ฉํฉ๋๋ค.score = ์ค์ ์ ์ * scale + (scale - custom_timestamp) scale๋ ๊ฐ์ ์๋ฆฟ์๋ฅผ ๋ถ๋ฆฌํ๋ ์์ custom_timestamp ์ต๋๊ฐ๋ณด๋ค ์ปค์ผ ํจ(ex: 10โน) custom_timestamp๋จผ์ ๋ฌ์ฑํ ์ฌ๋์ด ๋ ์์ ๊ฐ์ด ๋๋๋ก ํด์ ๋์ ์์๊ฐ ๋๋๋ก ํจ๊ณ์ฐ์: ์ ์ ๋ฌ์ฑ ์๊ฐ - ๊ธฐ์ค ์๊ฐ(ex: ์๋น์ค ์ถ์์ผ)Unix timestamp๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด, ์ด ๋จ์๋ก๋ 10์๋ฆฌ๋ผ์ scale์ ๋ ํฌ๊ฒ ์ก์์ผ ํ๊ณ ,๊ทธ๋งํผ ZSET score์ double ์ ๋ฐ๋ ํ๊ณ(~10ยนโต)์์ ์ค์ ์ ์์ ์ธ ์ ์๋ ์๋ฆฟ์๊ฐ ์ค์ด๋ฆ. ๋ฐ๋ผ์ ๊ธฐ์ค ์์ ์ ์๋น์ค ์ถ์์ผ๋ก ์ก์ผ๋ฉด custom_timestamp๊ฐ 8~9์๋ฆฌ๋ก ์ค์ด๋ค์ด ์ ๋ฐ๋ ์์ฐ์ ์๋ ์ ์์. 3. 3๊ฐ ์ด์์ ๊ธฐ์ค ํ์์ (1)๋ง์ํ์ ๋๋ก ์๋ฆฟ์๋ฅผ ์๊ฒ ์ชผ๊ฐ๋ ๋ฐฉ์์ ์ ๋ฐ๋ ํ๊ณ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ฌด๋์ง ์ ์์ต๋๋ค. ์ด๋๋ Redis์ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ์ ์ญํ ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์๊ฐํด ๋ณผ ์ ์์ต๋๋ค.ZSET: 1์ฐจ ์ ๋ ฌ ๊ธฐ์ค๋ง score์ ์ ์ฅ (ex: ์ ์)Hash ๋๋ RDBMS: ๋ฉค๋ฒ๋ณ ์์ธ ์ ๋ณด ์ ์ฅ (2์ฐจยท3์ฐจ ๊ธฐ์ค)์ดํ ์กฐํ ํ๋ฆ (ํ์ด์ง / Top-N ์กฐํ)1) ZSET์์ 1์ฐจ ๊ธฐ์ค์ผ๋ก ํด๋น ํ์ด์ง์ ํด๋นํ๋ Top-N ํ๋ณด ์กฐํ (๋์ ์ด ๋ง์ ์ ์๋ ๊ฒ์ ๊ฐ์ํด์ ๋ณด์ฌ์ค ๊ฐ์๋ณด๋ค ์ฌ์ ์๊ฒ ๊ฐ์ ธ์ค๊ธฐ)2) Hash ๋๋ RDBMS์์ ํ๋ณด๋ค์ ์์ธ ์ ๋ณด ์กฐํ. (RDBMS ์ฌ์ฉ ์ IN ์ ์ธ๋ฑ์ค ์ฟผ๋ฆฌ ํ์)3) ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ฒด ๊ธฐ์ค์ผ๋ก ์ต์ข ์ ๋ ฌ ํ ํ์ด์ง ๋จ์๋ก ์๋ต 4. 3๊ฐ ์ด์์ ๊ธฐ์ค ํ์์ (2)์์์ ์ํฅ์ ์ฃผ๋ ์ฌ๋ฌ ์์ธ์ ์๋น์ค ๋ด๋ถ ๊ณต์์ ๋ฐ๋ก ๋ง๋ค์ด์ ์ต์ข ๊ณ์ฐ ๊ฐ์ score๋ก ์ฌ์ฉ๊ธฐํ ์ฌ๋ฌ ๋ฐฉ์์ด ์์ ์ ์๊ฒ ์ผ๋, ๋์ฒด๋ก ์ด ๋ฒ์ ์์์ ํด๊ฒฐ ํ ์ ์์๊ฑฐ ๊ฐ์ต๋๋ค. ์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค. ํ์ดํ ์ ๋๋ค. ๐
- Likes
- 0
- Comments
- 2
- Viewcount
- 69
Q&A
Redlock ์๊ณ ๋ฆฌ์ฆ ๊ดํด ๊ถ๊ธํ๊ฒ ์์ต๋๋ค!
์๋ ํ์ธ์. ์ง๋ฌธ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.1. Redis ๋ ธ๋๋ค๋ผ๋ฆฌ ์์์ ์๋์ผ๋ก ๋๊ธฐํ ๋๋ ๊ฑด ์๋๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ ๋ ธ๋์ ์ง์ SET NX PX ๋ฅผ ์์ฒญํฉ๋๋ค. ์ฆ ์๋์ผ๋ก ๋์ผํ ๊ฐ์ ๊ฐ ๋ ธ๋์ ์ ๋ ฅํ๋ ๊ฒ์ ๋๋ค. (Redis ๋ ธ๋๋ค ๋ผ๋ฆฌ๋ ์๋ก ์ ํ ๋ชจ๋ฅด๋ ์ฌ์ด์ ๋๋ค.)2. ์ด๋ ๊ฒ ํ๋ฉด ๋ ธ๋๋ง๋ค ๋ฏธ์ธํ ์๊ฐ ์ฐจ๊ฐ ์๊ธฐ๋ ๊ฒ ๋ง์ต๋๋ค. ๊ทธ๋์ Redlock์ "์ค์ TTL - ๋ฝ ํ๋์ ๊ฑธ๋ฆฐ ์๊ฐ"์ผ๋ก ์ค์ ์ ํจ TTL์ ๋ค์ ๊ณ์ฐํ๊ณ , ์ด ์ ํจ TTL์์ ์์ ์ ๋๋ด๋๋ก ํฉ๋๋ค. ๋ง์ผ ์ ํจ TTL์ด ์์ ํ๊ธฐ์ ๋๋ฌด ์งง์ผ๋ฉด ๋ฝ ํ๋ ์์ฒด๋ฅผ ํฌ๊ธฐํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 90




