๐งฉ 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(MlogN)
๐งฎ ์งํฉ ์ฐ์ฐ ๋ช
๋ น์ด
๋ช
๋ น์ด ์ค๋ช
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 ๊ธฐ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ
โ
์ค๋ณต ๋ถ๊ฐ, ์ ๋ ฌ ์ง์, ๋น ๋ฅธ ์์ ์กฐํ
โ
๊ฒ์, ๋ฆฌ๋๋ณด๋, ์ค์๊ฐ ์์ ๊ด๋ฆฌ์ ํ์