美文网首页
排行榜实现思路

排行榜实现思路

作者: 小怪兽狂殴奥特曼 | 来源:发表于2021-03-16 19:48 被阅读0次

    需求

    常见的排行榜有社交游戏排行榜、积分排行榜、商品排行榜。
    一般的需求无非如下几点:
    1.全局用户的排行(得分+排名)情况
    2.单个用户的排行情况
    3.排行榜前10(前N)的排行情况
    4.自己朋友圈的排行情况

    实现思路

    需求中,既有单个用户的查询,又有某一个范围用户的查询(top N)。
    当数据量很小时,可以使用mysql单表来存放数据。但数据量很大的时候,mysql往往需要进行分表分库,这个时候实现起来会很复杂。这个时候一般都会采用redis的zset来实现。
    需求1:可以将所有用户的得分和用户id存放在一个zset中,这样子可以得到有序的全局用户的排行情况。用户的增删则通过ZADD/ZREM来实现。用户得分的增加则通过ZINCRYBY实现。
    需求2:单个用户的排行情况,可以使用ZREVRANG rank uid来获取。
    需求3:排行榜TOP N,则可以通过ZREVRANGEBYSCORE来获取。
    需求4:app端将朋友圈的user_id集合传给后台,后台逐个通过ZSCORE rank uid来获取所有朋友的分数。然后对这些分数排序后返回给app端。

    相关文章

      网友评论

          本文标题:排行榜实现思路

          本文链接:https://www.haomeiwen.com/subject/gwydcltx.html