https://www.nowcoder.com/share/jump/34126941734682007999
chatgpt
要从大量评论中快速找出点赞量 Top 100,可以采用以下几种优化方法:
Redis 的 Sorted Set 是一个高效的数据结构,非常适合处理这种需求。步骤如下:
• 每条评论的点赞量作为 score,评论的唯一 ID 作为 member。
• 使用 ZADD 命令将评论添加到 Sorted Set 中。
• 如:ZADD comment_likes 42 comment_id_1。
• 每次点赞时,用 ZINCRBY 更新 score 值:
ZINCRBY comment_likes 1 comment_id_1
• 使用 ZREVRANGE,按分数降序获取前 100 名:
ZREVRANGE comment_likes 0 99 WITHSCORES
优点:查询效率为 O(log(N) + M),N 是集合大小,M 是结果数量(100)。
缺点:Redis 内存有限,适合中等规模数据场景。
如果数据量特别大,Redis 无法容纳所有数据,可以在数据库中通过索引和分页优化: