redis排行榜之日排行周排行設計

2021-08-21 14:47:36 字數 768 閱讀 8303

排行榜功能是乙個很普遍的需求。使用 redis 中有序集合的特性來實現排行榜是又好又快的選擇。

一般排行榜都是有實效性的,比如「使用者積分榜」。如果沒有實效性一直按照總榜來排,可能榜首總是幾個老使用者,對於新使用者來說,那真是太令人沮喪了。

首先,來個「今日積分榜」吧,排序規則是今日使用者新增積分從多到少。

那麼使用者增加積分時,都操作一下記錄當天積分增加的有序集合。 假設今天是 2015 年 04 月 01 日,uid 為 1 的使用者因為某個操作,增加了 5 個積分。 redis 命令如下:

bashzincrby rank:20150401 5 1
假設還有其他幾個使用者也增加了積分:

bash
zincrby rank:20150401 1 2

zincrby rank:20150401 10 3

看看現在有序集合 rank:20150401 中的資料(withscores 引數可以附帶獲取元素的 score):

bashzrange rank:20150401 0 -1 withscores
bash
1)"2"

2)"1"

3)"1"

4)"5"

<

redis 排行榜應用

我分享這個主要是因為 redis 的排行榜思路很讚 排行榜功能是乙個很普遍的需求。使用 redis 中有序集合的特性來實現排行榜是又好又快的選擇。一般排行榜都是有實效性的,比如 使用者積分榜 如果沒有實效性一直按照總榜來排,可能榜首總是幾個老使用者,對於新使用者來說,那真是太令人沮喪了。首先,來個 ...

redis排行榜例子

1 儲存幾個排行榜成員資料 這裡可以理解為把自己系統已有資料載入到 redis 中 zadd testtop 23 member1 25 member2 2 增加某個人的分數 這裡的分數就是排行的依據可以是浮點型別 zincrby testtop 20 member1 此時 testtop 中 me...

redis排行榜相關

排行榜是業務開發中常見的乙個場景,如何設計乙個好的資料結構能夠滿足高效實時的查詢,下面我們結合乙個實際例子來討論一下。選手報名參加活動,觀眾可以對選手進行投票,每個觀眾對同一名選手只能投一票,活動期間最多投四票。後台需要提供如下介面 首先需要一張表儲存投票記錄,一次投票就是一條記錄。這張表相當於投票...