遊戲服排行榜實現(面試被問到)

2021-08-26 23:41:56 字數 980 閱讀 5002

最近面試連續被問到遊戲服排行榜如何實現,因為以前一直不覺得是個事,所以突然問到一臉懵逼,現在我自己總結一下。

目前工作中ke排行榜的實現

1.單服排行榜,直接用ruby on rails封裝的查詢語句實現(這個效率其實非常低,可以優化為redis排序)。

2.跨服排行榜-名人堂,設定了redis的快取,24小時更新一次,從中心服拉資料,由於資料量小中心服介面內也是用的ruby on rails封裝的查詢語句實現。

3.跨服排行榜-異族,遊戲服定期分批上報本服資料到中心服,存在redis中,設定了redis的快取,超過50秒可以請求一次中心服,拉取最新排名,中心服介面使用redis來排名,使用了redis的zrevrange(從大到小)排序函式來實現。

公司新專案例如303(erlang寫的)遊戲排行榜實現

1.有乙個單獨的的排行榜伺服器,內部使用redis實現排序(使用redis的排序集sorted sets(有序集合),這個的資料結構是跳躍表+字典),單服,全服都在這個服上實現排序,遊戲服有資料變動就上傳排序服,這個伺服器對外提供http服務,其他遊戲服通過http請求來set或get分數,一般是玩家在看排行榜的時候才請求更新,平時不請求。

2.當然單服也可以直接在遊戲服上實現,用redis排序,或者自己寫個排序資料結構,絕對杜絕直接用資料庫來排序。

朋友公司,golang遊戲排行榜實現

1.單服的話用redis排序,或者找個庫用skiplist(跳躍表)實現就行,不要用資料庫排(這個效率太低)。

2.全服排行榜的話,建乙個單獨的排行榜伺服器,用這個伺服器對外提供http服務,其他遊戲服通過http請求來set或get分數,排行榜伺服器底層也是用的redis或者找個庫用skiplist(跳躍表)實現。

3.排行榜一般會做個快取,多久更新一次,這是優化範疇。比如是更新的話,可以實時更新,但是外麵包乙個nginx,然後在nginx上做乙個靜態的快取,每一小時過期。

遊戲服務端開發 排行榜

排行榜幾乎是每個網路遊戲都有的系統,以下用erlang以例,分享一種排行榜實現方式。每個排行榜對應乙個actor,state使用如下結構 通用排行榜結構 record rank list,已經排好序的列表 ready list one rank 待排序的列表 sort time 0 排行榜的重新整理...

mysql製作排行榜 mysql實現排行榜

博主新人一枚,大家可以提出自己的寶貴意見。下來我們進入正題。大家首先要了解介面的場景,再就是排行榜的規則,我們這裡說的中國式排行榜。排行榜總結了一下分為3種 中國式排行 非中國式排行1 非中國式排行2 1 1 1 2 2 2 2 2 3 3 4 4 3 5 5 4 5 6 5 7 7 select ...

redis實現排行榜

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