个人技术分享

排行榜之Redis实现

1、排行榜系统的功能点

  1. 数据收集与计算
  2. 排名规则
  3. 实时性
  4. 可视化展示
  5. 周期性更新

2、排行榜系统基本功能要素

在这里插入图片描述

3种实现方案在这里插入图片描述

Redis实现方案

出于性能, 自排序,持久化,可扩展性考虑。
使用Redis的zset来实现排行榜
  1. 增加信息:使用Redis的zadd命令

    // zadd key  <score>  <name>
     
     zadd leaderboard  <score>  <name>
    
  2. 查询排行榜

    (倒叙输出 带出分数   -1:所有数据 count:指定数量)
    zrevrange  leaderboard  0   <count -1>  withscores
    
  3. 清除过期信息

    zrem leaderboard  <name>
    
  4. 更新排行分数

     zadd leaderboard <new_score>  <name>
    
  5. 查找指定玩家的排名和分数

    zrevrank  leaderboard  <name>
    
优点:
  • 快速插入,查询操作。插入和删除的时间复杂度为O(logN),其中N是有序集合大小。这使得更新排行榜操作非常高效。
  • 实时性高。有序集合是基于内存的数据结构,可以实现实时的排行榜更新。可以使用Redis提供的发布-订阅机制。将排行榜的变动实时推送给订阅者。使得排行榜的变化能立即反应在客户端活应用中。
  • 丰富API。 有序集合支持按照分数范围活排名范围进行查询。可以方便获取前几名成员或指定分数范围内的成员。这是的在排行榜中进行各种排行榜变得高效简单。
  • 内存高效。redis采用高效的数据结构和内存管理,可以有效地利用内存。
  • 持久化。Redis提供持久化选项,可以将数据定期或及时地保存到磁盘上,一确保数据的持久化。

总结

  1. 适用于 大流量,高并发场景。
  2. 实时性高,内存高效 ,持久化 ,丰富api