Redis排行榜的實現

2021-10-11 01:16:58 字數 1154 閱讀 2471

遊戲闖關排行榜以通關次數正序復活次數倒序第一次通關的時間倒序來進行排序

第一步是組合排序分值,只有根據排序規則組合出來的分值,才能通過排序獲取到正確的排名。在排序規則中一般會有兩種方式,屬性正序和倒序。

正序對於組合數字來說沒有影響,但是倒序就需要進行特殊的處理。

那麼多說無益,上**

排行榜顧名思義就是需要看到你和其他人的排名,所以你需要獲取到所有的排名資訊和名次。然而你從redis中取出的資料是根據權重組合出來的分值,並沒有所謂的排名。

那應該咋整?只能老老實實根據分數再把資料拆出來。這一步就點麻煩,需要考慮到組裝分數的位數問題。例如:

闖關5次、復活2次和第一次通關時間2020-06-09分數為5978408367999闖關15次、復活2次和第一次通關時間2020-06-09分數為15978408367999

這個時候通過字串擷取的時候就要小心這個的擷取方式

這裡呢,要是上來直接數字數開始擷取,也不是不可以,畢竟組裝分數的規則是確定的,但未免有點不體面。

string successnum;

string correctlynum = "0";

//避免異常資料報錯

//11:答對題數1位+時間戳10位

if (scorestr.length() > 10) else

}

其實這裡有兩個關鍵的數字,10和12。這兩個數字其實就是就是組合數字的分界點

redis實現排行榜

排行榜功能是乙個很普遍的需求。設想在乙個遊戲中,有上百萬的玩家資料,如果現在需要你根據玩家的經驗值整理乙個前20名的排行榜,你會怎麼做呢?你不可能 order by limit 去實現 select from game socre order by score desc limit 0,20 使用 ...

Redis 實現排行榜

不再介紹資料庫做實時排行榜的弊端,直接介紹redis的有序集合的強大作用。有序集合的資料和集合一樣,不能重複,但每個元素又可以關聯乙個分數,這個分數可以重複。需要注意的是,redis版本和命令變化較大,注意執行環境。執行環境 redis 庫版本 3.3.11 redis版本 3.2.1 生成資料 i...

熱門排行榜 redis實現

最近專案架構公升級,主要對效能方面進行公升級。之前熱門排行榜是通過對點讚量,閱讀量,收藏量等一系列的資料在db通過計算查出來的,效率方面不太好。因此考慮對該功能進行公升級優化,並且新增週期性排行榜如月排行,總排行。在引入快取之後首先考慮的是通過快取實現熱門排行榜的功能,但是考慮到首次引入快取擔心快取...