運營類的活動中,經常會有類似積分榜、排行榜的功能需求,實時的展現總的積分、排名,包括他們各自的基本資訊,以及自己的積分排名等。
關係型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...