美文网首页
redis实战之使用redis实现排行榜(转)

redis实战之使用redis实现排行榜(转)

作者: 忘忧谷主 | 来源:发表于2017-04-25 10:06 被阅读0次

    设想在一个游戏中,有上百万的玩家数据,如果现在需要你根据玩家的经验值整理一个前20名的排行榜,你会怎么做呢?

    一般的做法是写一条类似下面这条sql语句的方式来获取:

    这种方式在数据量较小的情况下可行,但是在数据量大的情况下查询速度将变慢,特别是还需要联表查询时,速度下降的就更明显了。

    这时你可以考虑使用redis来实现这个功能。

    实现这个功能主要用到的redis数据类型是redis的有序集合zset。zset 是set 类型的一个扩展,比原有的类型多了一个顺序属性.此属性在每次插入数据时会自动调整顺序值,保证value值按照一定顺序连续排列。

    主要的实现思路是:

    1、在一个新的玩家参与到游戏中时,在redis中的zset中新增一条记录(记录内容看具体的需求)score为0

    2、当玩家的经验值发生变化时,修改该玩家的score值

    3、使用redis的ZREVRANGE方法获取排行榜

    实现代码:

    functions.php

    iredis.php

    index.php

    执行结果:

    相关文章

      网友评论

          本文标题:redis实战之使用redis实现排行榜(转)

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