Redis Data Types
Redis ์๋ฃ๊ตฌ์กฐ
Redis์ ์๋ฃ๊ตฌ์กฐ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค.

๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ์ ๊ทธ ํน์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ ์์ ๋ฅผ ์์๋ณด์.
๊ฐ๋จํ ๋ช
๋ น์ด๋ ๊ฐ์ด ๋ค๋ฃจ๊ณ , stream, pub/sub, hyperlog๋ฑ์ ๋ํด์๋ ์์๋ณด์.
Strings
String ํ์ ์ Redis์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ type์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ Key-value ํ์์ ๋ฐ๋ฅด๊ณ ์๋ค.
Key์ value ๋ชจ๋ binary safe ํ๊ธฐ ๋๋ฌธ์ ์ด๋ ํ ๋ฐ์ดํฐ์ ์ข ๋ฅ๋ key, value์ ๊ฐ์ด ๋ ์ ์๋ค.
๊ฐ์ ์ต๋ ๊ธธ์ด๋ 512MB์ด๋ค. (๊ฑฐ์ ์ ๊ฒฝ์ธ ํ์ ์์ ๋ฏ ํ๋ค)
INCR, DECR, INCRBY ๋ช ๋ น์ด๋ฅผ ํตํด Atomic counters(Thread safe counter)๋ฅผ ๊ตฌํํ ์ ์๋ค.
APPEND ๋ช ๋ น์ด๋ฅผ ํตํด APPEND๊ฐ ๊ฐ๋ฅํ๋ค.
GETRANGE, SETRANGE ๋ช ๋ น์ด๋ฅผ ํตํด ๊ฐ์ ๋๋ค ์ก์ธ์ค๊ฐ ๊ฐ๋ฅํ๋ค.
๊ฐ์ ์ด๋ ์์น๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค.
์์
Append
INCR, DECR, INCRBY
Lists
Lists๋ Linked List์ ์ ์ฌํ ํํ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ Redis์์ ์ ๊ณตํ๋ ์๋ฃ๊ตฌ์กฐ๋ค.
๋ฐ๋ผ์ ์ฒ์๊ณผ ๋ง์ง๋ง ๋ถ๋ถ์ element๋ฅผ ์ถ๊ฐ / ์ญ์ / ์กฐํํ๋ ๊ฒ์ O(1)์ ์๋๋ฅผ ๊ฐ์ง์ง๋ง ์ค๊ฐ์ ํน์ index ๊ฐ์ ์กฐํํ ๋๋ O(N)์ ์๋๋ฅผ ๊ฐ์ง๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ค๊ฐ์ ์๋ index๊ฐ์ ๊ฐ์ ธ์์ผ ํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ฉด
Sorted Set์ ์ฌ์ฉํ์
LPUSH, LTRIM, LPOP, RPOP, RTRIM, RPUSH, LRANGE ๋ฑ ๋ง์ ๋ช ๋ น์ด๊ฐ ์๋ค.
์์
LRANGE์ 0๊ณผ -1์ ํ์ด์ฌ List์ ์ธ๋ฑ์ค์ ๋น๊ตํ๋ฉด ๊ธฐ์ตํ๊ธฐ ํธํ๋ค.
LTRIM๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ก Lists์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ ์ ์๋ค.
Sets
Redis sets๋ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋ Strings์ ์งํฉ์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๊ฐ, ์ญ์ , element์ ์กด์ฌ ์ ๋ฌดํ์ธ ๋ฑ์ ๋ํด์ O(1)์ ์๋๋ฅผ ๋ณด์ฅํ๋ค.
๋ํ Set ์ด๊ธฐ ๋๋ฌธ์ ๋์ผํ value๋ ์ถ๊ฐํ๋ค๊ณ ํด์ 2๊ฐ๊ฐ ๊ณต์กดํ์ง ์๋๋ค.
์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , ๋น ๋ฅธ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ง๋๊ณ ์์ด์ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ค.
๋ํ Sets๋ Sets๊ฐ์ ํฉ์งํฉ, ์ฐจ์งํฉ ๋ฑ์ ์ง์ํด์ค๋ค.
Set์ ๋ช ๋ น์ด๋ sadd, smembers ๋ฑ์ด ์๋ค.
Hashes
Redis์ Hashes๋ value๋ก ๋ ๋ค๋ฅธ key-value Map์ ๊ฐ์ง๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
Sorted sets
Redis์ Sorted sets ์๋ฃ๊ตฌ์กฐ๋ Sets ์๋ฃ๊ตฌ์กฐ์ Score๋ฅผ ์ถ๊ฐ๋ก ๊ธฐ๋กํ์ฌ Score๊ฐ ๋ฎ์์์๋ถํฐ ๋์ ์์๋๋ก ์ ๋ ฌ๋๋ ์๋ฃ๊ตฌ์กฐ๋ค.
๋์ผํ ๊ฐ(Key)์ ์ค์ง ๋ชปํ๋ฉฐ Score(Value)๋ ๋์ผํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ด ํน์ Member์ ์์๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
Stream
Redis 5.0์ ์๋กญ๊ฒ ๋์ ๋ ๋ฐ์ดํฐ ์ ํ์ด๋ค.
์ด ๊ธ์ ์ฌ์ค์ Stream์ ์ํด ์ฐ๋ ๊ธ์ด๋ฏ๋ก ์กฐ๊ธ ์์ธํ๊ฒ ๋ค๋ฃฐ ์์ ์ด๋ค.
์ผ๋จ XADD ๋ช ๋ น์ด๋ก ์คํธ๋ฆผ์ ํ๋ ์ถ๊ฐํ๋ค.
*์ ์ด์ฉํ๋ฉด ์๋์ผ๋ก ID๋ฅผ ๋ถ์ฌํด์ฃผ๊ณ , ์ด ID๋ milliseconds - sequence์ ํํ๋ก ๋์จ๋ค.
ํ์ฌ ์๊ฐ์ timestamp ์ซ์์ ๊ฐ์ ์๊ฐ๋ด์ ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ numbering์ด ๋์ด์๋ค.
์ด์ XREAD๋ฅผ ์ด์ฉํด์ ์ฝ์ด๋ณด์.
$๋ ๋ค์ํ ๋ป์ด ์๋ค. jsonpath ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ค๋ ๋ป์ผ๋ก๋ ์ฐ์ด๊ณ $123 ์ 123bytes๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ป์ผ๋ก ์ฐ์ด๊ธฐ๋ ํ๊ณ ์ฌ๊ธฐ์๋ ์๋ก ์๊ธด streams data๋ง ๋ฐ๊ฒ ๋ค๋ ๋ป์ด๋ค.
์์ ๊ฐ์ด ๋ค๋ฅธ ํฐ๋ฏธ๋์์ XADD ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฉด XREADํ๋ ํฐ๋ฏธ๋์์ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ์๊ฐ ์๋ค.
๋ค์์ XGROUP์ด๋ค. ๋ ๋์ค ํค์ ํจ๊ป ๊ทธ๋ฃน์ ์์ฑํ ์ ์๋ค.
๋ค์ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด๋ณด์.
๋ค์๊ณผ ๊ฐ์ด XRANGE ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ์คํธ๋ฆผ์ ๋ด๊ฒจ์๋ ์ ์ฒด ๋ด์ญ์ ์ถ๋ ฅํ ์ ์๋ค.
-, + ๋ถ๋ถ์๋ Entry ID๋ฅผ ๋ฃ์ ์ ์๋๋ฐ, -๋ +๋ก ํ๋ฉด ๊ฐ์ฅ ์์ ์์ด๋๋ถํฐ ๊ฐ์ฅ ํฐ ์์ด๋๊น์ง ๋ณด์ฌ์ค๋ค.
์ด์ ๊ทธ๋ฅ READ๊ฐ ์๋๋ผ XGROUPREAD๋ฅผ ํด๋ณด์.
<group-name> <consumer-name> ์์๋๋ก ๋ช ์ํด์ ์ฌ์ฉํ๋ค.
์ฌ๊ธฐ ์์ ์์ group-name์
mygroup, consumer-name์Alice๋ก ์ฌ์ฉํ๋ค.๋์
>๋ ๋ค๋ฅธ ์๋น์์๊ฒ ์ ๋ฌ๋ ์ ์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ฌ ๋ ์ฌ์ฉํ๋ ํน์ ID
๋ง์ฝ ์คํธ๋ฆผ์ ๋ฐ๋ผ๋ณด๊ณ ๋๊ธฐํ๋ ค๋ฉด ์๋์ ๊ฐ์ด BLOCK <millisecondsTime> ์ ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ถ์ถ๋ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ธํ ์ ์๋ค.

Last updated