類似排行榜需求的實現

2021-07-04 14:41:14 字數 1167 閱讀 5341

運營類的活動中,經常會有類似積分榜、排行榜的功能需求,實時的展現總的積分、排名,包括他們各自的基本資訊,以及自己的積分排名等。

關係型db對此的支援並不好。實現比較複雜而且會db帶來不小的壓力。

之前對redis set操作使用比較多,包括smembers、scard、sadd、sdiff等。redis的zset,即sorted-set,與set的區別在於zset加了乙個分數(score)與之關聯。成員按照分數進行排序。和set一樣,成員必須唯一,但是分數可以重複。zset增刪改時間複雜度為成員數量的對數,十分高效。

1. 使用api

public class redisutils

2. 業務邏輯

// frompassport使用者給touser使用者投了num票

@override

public mapthumbsup(string frompassport, producerthumbsupuser touser, int num) else , topassport: {}, num: {}, userjson: {}, result: {}",

frompassport, topassport, num, userjson, result);

map.put("count", num);

map.put("already", false);

return map;

}} // 排行榜

@override

public listgetthumbsuplist()

return list;

} // 使用者的票數

@override

public int getscore(producerthumbsupuser producerthumbsupuser)

logger.info("score--------" + score);

return score.intvalue();

} // 使用者的排名

@override

public int getrank(producerthumbsupuser producerthumbsupuser)

return rank.intvalue();

}

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 使用 ...

Redis 實現排行榜

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