专栏名称: 码小辫
给程序员和编程爱好者分享计算机编程电子书以及相关的学习资源
目录
今天看啥  ›  专栏  ›  码小辫

腾讯二面:王者荣耀亿级排行榜,如何设计?

码小辫  · 公众号  ·  · 2025-05-03 17:25
    

主要观点总结

本文主要探讨了亿级用户排行榜的设计问题,从数据库的选择到Redis的使用,再到内存优化和分片存储等方案进行了详细阐述。文章还介绍了实现方案中的分治思想,包括按区间拆分、动态路由和聚合查询等。同时,文章也指出了在使用Redis时可能遇到的问题,如热Key问题、内存爆炸和数据持久化风险等,并给出了相应的解决方案。

关键观点总结

关键观点1: 数据库选择问题

对于亿级用户排行榜的设计,单纯使用数据库的order by方式在高并发实时更新的场景下会彻底崩盘,需要使用Redis等内存数据库来应对。

关键观点2: Redis的优势

Redis的zset有序集合结构适合用于排行榜的设计,其排序快、可扩展性强,能轻松应对高并发。Redis的数据全放内存,避免磁盘读写,核心操作秒回。

关键观点3: Redis可能遇到的问题及解决方案

Redis在应对亿级数据时可能遇到热Key问题、内存爆炸和数据持久化风险等,可以通过多级缓存、分片存储和异步双写等方式进行优化和解决。

关键观点4: 实现方案中的分治思想

按照区间拆分、动态路由和聚合查询等思路,将排行榜切成小块进行处理,可以提高查询效率和性能。

关键观点5: 其他注意事项

文章还提到了其他注意事项,如慎用ZREVRANGE类全量操作、警惕黑马用户冲击分片策略、内存爆炸与性能抖动等问题,以及数据迁移和离职交接时可能出现的风险。


文章预览

码小辫  百 万 粉 丝认证 号 点击关注后,你不仅获得一个找资源的工具,更获得一个有趣的灵魂  ▶  ▶   ▶ 前言 分享一道网上很火的腾讯面试题: 亿级用户排行榜怎么设计呢?换种说法,王者荣耀亿级排行榜,如何设计? 本文田螺哥从面试的角度,跟大家一起探讨一下,如何回答更好呢? 数据库的order by为什么不行? 为什么Redis是排行榜的“扛把子”? Redis扛亿级数据可能存在哪些问题以及对应解决方案 实现方案:分治 巨人的肩膀,前人踩过的坑 1. 数据库的order by 很多小伙伴, 一提到排行榜,就想到数据库的order by 。 比如微信运动的步数排行: select * from user_info order by step desc  这个实现没有问题的,如果表的数据量少的话,反而推荐这样实现。如果数据量多呢。则存在问题,尤其还涉及亿级的数据量时~ 在亿级用户+高并发实时更新的场 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览