Sorted_Set

๊ฐ•์ฝ”๋”ฉยท2025๋…„ 10์›” 24์ผ

๋ ˆ๋””์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
9/21

๐Ÿงฉ 2.6 Sorted Setํ˜• (์ •๋ ฌ๋œ ์ง‘ํ•ฉํ˜•)
๐Ÿ”น ๊ฐœ๋…

Sorted Setํ˜•์€ Set๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ ๋ฉค๋ฒ„์— ์ ์ˆ˜(score) ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ, ์ ์ˆ˜ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๋ฉค๋ฒ„์˜ ์ค‘๋ณต์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ์ ์ˆ˜๋Š” ์ค‘๋ณต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ฃผ๋กœ ๊ฒŒ์ž„ ์‹ค์‹œ๊ฐ„ ๋žญํ‚น, ํ™œ๋™ ์ ์ˆ˜ ์ง‘๊ณ„ ๋“ฑ์— ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํŠน์ง•

์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด ์ง‘ํ•ฉ.

๋ชจ๋“  ์š”์†Œ๋Š” โ€œ์ ์ˆ˜(score)โ€๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ/๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ.

๋ฒ”์œ„ ๊ฒ€์ƒ‰, ์ˆœ์œ„ ์กฐํšŒ, ํŠน์ • ์ ์ˆ˜๋Œ€์˜ ์‚ฌ์šฉ์ž ์ถ”์ถœ ๋“ฑ์— ๋งค์šฐ ํšจ์œจ์ .

๐Ÿงญ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€

์‹ค์‹œ๊ฐ„ ๋žญํ‚น ์‹œ์Šคํ…œ

ํ™œ๋™ ํ†ต๊ณ„ (์˜ˆ: ํฌ์ธํŠธ, ์ ์ˆ˜)

๋ฆฌ๋”๋ณด๋“œ (leaderboard)

๐Ÿงฐ ์ฃผ์š” ๋ช…๋ น์–ด ์š”์•ฝ
๋ช…๋ น์–ด ๊ธฐ๋Šฅ ์‹œ๊ฐ„๋ณต์žก๋„
ZADD key score member ... ์ ์ˆ˜์™€ ๋ฉค๋ฒ„ ์ถ”๊ฐ€ O(logN)
ZCARD key ์ง‘ํ•ฉ ๋‚ด ๋ฉค๋ฒ„ ์ˆ˜ ๋ฐ˜ํ™˜ O(1)
ZRANK key member ๋ฉค๋ฒ„์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ˆœ์œ„ O(logN)
ZREVRANK key member ๋ฉค๋ฒ„์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ˆœ์œ„ O(logN)
ZRANGE key start stop [WITHSCORES] ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฒ”์œ„ ๋‚ด ๋ฉค๋ฒ„ ์กฐํšŒ O(logN + M)
ZREVRANGE key start stop [WITHSCORES] ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฒ”์œ„ ๋‚ด ๋ฉค๋ฒ„ ์กฐํšŒ O(logN + M)
ZREM key member ... ํŠน์ • ๋ฉค๋ฒ„ ์‚ญ์ œ O(MlogN)
ZCOUNT key min max ์ง€์ • ์ ์ˆ˜ ๋ฒ”์œ„์˜ ๋ฉค๋ฒ„ ์ˆ˜ ๋ฐ˜ํ™˜ O(logN)
ZSCORE key member ๋ฉค๋ฒ„์˜ ์ ์ˆ˜ ํ™•์ธ O(1)
ZPOPMAX / ZPOPMIN key [count] ์ตœ๊ณ /์ตœ์ € ์ ์ˆ˜ ๋ฉค๋ฒ„ ๋ฐ˜ํ™˜ ๋ฐ ์‚ญ์ œ O(M
logN)
๐Ÿงฎ ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋ช…๋ น์–ด
๋ช…๋ น์–ด ์„ค๋ช…
ZINTER / ZINTERSTORE ๊ต์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋ฐ ์ €์žฅ
ZUNION / ZUNIONSTORE ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋ฐ ์ €์žฅ
ZDIFF / ZDIFFSTORE ์ฐจ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋ฐ ์ €์žฅ
โš™๏ธ ๊ธฐํƒ€ ๊ณ ๊ธ‰ ๋ช…๋ น์–ด

ZINCRBY: ํŠน์ • ๋ฉค๋ฒ„์˜ ์ ์ˆ˜ ์ฆ๊ฐ€.

ZRANGEBYSCORE / ZREVRANGEBYSCORE: ์ ์ˆ˜ ๋ฒ”์œ„๋กœ ๋ฉค๋ฒ„ ์กฐํšŒ.

ZREMOVERANGEBYRANK / ZREMOVERANGEBYSCORE: ํŠน์ • ๋ฒ”์œ„์˜ ๋ฉค๋ฒ„ ์‚ญ์ œ.

ZRANDMEMBER: ๋ฌด์ž‘์œ„ ๋ฉค๋ฒ„ ์ถ”์ถœ.

BZPOPMIN / BZPOPMAX: ๋ธ”๋ก ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ POP ๋ช…๋ น.

๐Ÿงฉ ์‹คํ–‰ ์˜ˆ์‹œ

๋ฉค๋ฒ„ ์ถ”๊ฐ€

ZADD rank:event:1 324891 Taro
ZADD rank:event:1 276302 Jiro
ZADD rank:event:1 255547 Saburo
ZADD rank:event:1 311121 Shiro

๋‚ด๋ฆผ์ฐจ์ˆœ ์ˆœ์œ„ ์กฐํšŒ

ZREVRANGE rank:event:1 0 -1 WITHSCORES

์ถœ๋ ฅ:

1) "Taro"
2) "324891"
3) "Shiro"
4) "311121"
5) "Jiro"
...

๐Ÿงพ ์‹ค์Šต ์‘์šฉ

ZPOPMAX rank:event:1 โ†’ ์ตœ๊ณ  ์ ์ˆ˜ ๋ฉค๋ฒ„ ์ถ”์ถœ ๋ฐ ์‚ญ์ œ

ZREVRANK rank:event:1 Shiro โ†’ Shiro์˜ ํ˜„์žฌ ์ˆœ์œ„ ํ™•์ธ

ZSCORE rank:event:1 Shiro โ†’ Shiro์˜ ์ ์ˆ˜ ํ™•์ธ

๐Ÿ“˜ ํ•ต์‹ฌ ์š”์•ฝ

โœ… Sorted Set = Set + Score ๊ธฐ๋ฐ˜ ์ •๋ ฌ ๊ธฐ๋Šฅ
โœ… ์ค‘๋ณต ๋ถˆ๊ฐ€, ์ •๋ ฌ ์ง€์›, ๋น ๋ฅธ ์ˆœ์œ„ ์กฐํšŒ
โœ… ๊ฒŒ์ž„, ๋ฆฌ๋”๋ณด๋“œ, ์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ ๊ด€๋ฆฌ์— ํ•„์ˆ˜

profile
์ฃผ๋‹ˆ์–ด ํ’€์Šคํƒ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€