Redis 使用redis做排行榜系統

2021-09-10 12:11:49 字數 1446 閱讀 2043

首先根據需求,我們要做乙個排行榜系統,那麼首先想到的是zset有序集合。那麼最重要的就是redis的命令了。

1)新增成員

zadd key score menber[score member]
redis3.2為zadd命令新增了nx、xx、ch、incr四個選項

計算成員個數

zcard key
3)計算某個成員的分數

zscore key member
4)計算成員的排名

zrank key member 

zrevrank key member

zrank 是分數從低到高

zrevrank 是分數從高到低

比如 小明 246 小張498 小李 503 zrank得出小明是第0名 zrevrank 得出小李是第0名(排名按照0開始計算)

5)刪除成員

zrem key member[member....]
增加成員分數

zincrby key increment member
返回指定排名範圍的成員

zrang  key start end [withscores]

zrevrang key start end [withscores]

有序集合是按照分值排名,zrange 是從低到高返回,zrevrang則是反之。

如果加上withscores 選項,那麼會同時返回成員的分數

8)返回指定分數範圍的成員

zrangebyscore key min max[withscores] [limit offset count]

zrevrangebyscore key min max[withscores] [limit offset count]

其中zrangebyscore按照分數從低到高返回,zrevrangebyscore反之。withscores選項會同時返回每個成員的分數。

同時min和max還支援開區間(小括號)和閉區間(中括號),-inf和+inf分別代表無限小和無限大

9)返回指定分數範圍成員個數

zcount key min max
10)刪除指定排名內的公升序元素

zremrangebyrank key start end
刪除指定分數範圍的成員

zremrangebyscore key min max

redis實戰之使用redis實現排行榜

設想在乙個遊戲中,有上百萬的玩家資料,如果現在需要你根據玩家的經驗值整理乙個前20名的排行榜,你會怎麼做呢?一般的做法是寫一條類似下面這條sql語句的方式來獲取 select from game socre order by score desc limit 0,20這種方式在資料量較小的情況下可行...

redis排重 使用 Redis 實現排行榜功能

排行榜功能是乙個很普遍的需求。使用 redis 中有序集合的特性來實現排行榜是又好又快的選擇。一般排行榜都是有實效性的,比如 使用者積分榜 如果沒有實效性一直按照總榜來排,可能榜首總是幾個老使用者,對於新使用者來說,那真是太令人沮喪了。首先,來個 今日積分榜 吧,排序規則是今日使用者新增積分從多到少...

redis排重 使用redis進行排行榜的小秘訣

前言 在日常一些簡單的活動開發中,我經常會碰到需要對使用者的分值等進行排行,此時一般會選擇redis的有序集合對使用者的分數進行儲存,但是不同的場景排行榜的方式也略有不同,以下根據自己日常的開發進行了一下歸納總結 redis 有序集合 sorted set 首先簡單介紹下什麼是有序集合。redis ...