一、排行榜系统介绍
在积分场景和投票场景下排行榜很常见,排行榜系统是一个可以对接很多项目的系统,应用非常广泛。排行榜是数据可视化的常见形式,可以有效地传达信息并吸引用户的注意力。
二、业务介绍
排行榜分为实时排行榜和历史排行榜。实时排行榜需要定时更新数据,保证数据的可用性;历史排行榜是历史数据,所以不需要实时更新,只需要考虑存储时的数据安全以及查询时的查询效率。
(一)实时排行榜
实时排行榜的数据交互会非常频繁,且每次查询的数据量很大,所以需要考虑这方面的优化。可以使用Redis来保存实时榜单数据,提高查询的效率。Redis中的ZSet类型可以数据除了键值之外,还有一个score属性,可以作为分数排序,因此非常适合做排行榜等数据结构。我们可以使用榜单的版本作为key,例如榜单是每月更新一个新的榜单,就可以使用年月(yyyyMM)作为key,如果是每赛季更新一次,就可以使用赛季版本号作为key;使用用户的标识作为value;最后用榜单的排序依据作为score(积分、投票数等)。
对于实时排行榜,我们需要在新增积分时更新Redis中保存的实时排行榜数据,对于排行榜的查询可以直接从Redis中查询,需要注意的是排行榜的数据非常多,所以需要分页查询。