面试题答案
一键面试1. 社交平台的用户排行榜
- 场景描述:在社交平台中,要根据用户的活跃度(如发布动态数量、点赞数量、评论数量等综合指标)来生成排行榜。
- BY选项运用:可以将每个用户的活跃度指标计算出来存储在Redis的Hash结构中,例如
user:1:{posts:10, likes:50, comments:20}
。假设我们以活跃度综合得分score = posts * 0.3 + likes * 0.5 + comments * 0.2
为例,在使用SORT
命令时,通过BY user:*->posts * 0.3 + user:*->likes * 0.5 + user:*->comments * 0.2
这样的表达式,以Hash结构中的各个字段值为基础进行预处理计算得分,然后依据这个得分对用户进行排序,从而生成按活跃度排序的用户排行榜。
2. 电商商品销量排序
- 场景描述:电商平台需要根据商品的销量对商品进行排序展示,同时可能还会考虑其他因素,如商品的好评率等,综合起来对商品进行排序。
- BY选项运用:将商品的销量和好评率等数据存储在Redis的Hash结构中,例如
product:1:{sales:100, rating:4.5}
。如果想综合销量和好评率进行排序,假设综合得分score = sales * 0.8 + rating * 10
,在使用SORT
命令时,通过BY product:*->sales * 0.8 + product:*->rating * 10
这样的表达式,以Hash结构中的销量和好评率字段值为基础进行预处理计算得分,进而根据这个得分对商品进行排序,实现按综合指标排序展示商品的功能。
3. 游戏玩家排行榜
- 场景描述:游戏中根据玩家的游戏得分、游戏时长等因素来生成排行榜。
- BY选项运用:把玩家的游戏得分、游戏时长等信息存放在Redis的Hash结构,如
player:1:{score:1000, playtime:50}
。假设综合排名得分score = score * 0.6 + playtime * 2
,使用SORT
命令时,通过BY player:*->score * 0.6 + player:*->playtime * 2
这样的表达式,以Hash结构中的字段值为基础预处理计算得分,再依据该得分对玩家进行排序,得到游戏玩家排行榜。
4. 视频平台视频热度排序
- 场景描述:视频平台依据视频的播放量、点赞数、评论数等衡量视频热度并排序。
- BY选项运用:将视频的播放量、点赞数、评论数等数据存于Redis的Hash结构,如
video:1:{views:10000, likes:500, comments:200}
。假设热度得分score = views * 0.5 + likes * 0.3 + comments * 0.2
,使用SORT
命令时,通过BY video:*->views * 0.5 + video:*->likes * 0.3 + video:*->comments * 0.2
这样的表达式,以Hash结构中的字段值为基础预处理计算得分,然后按得分对视频进行排序,展示按热度排序的视频列表。