https://www.nowcoder.com/share/jump/34126941734682007999

chatgpt

要从大量评论中快速找出点赞量 Top 100,可以采用以下几种优化方法:

1. 利用有序集合(Redis Sorted Set)

Redis 的 Sorted Set 是一个高效的数据结构,非常适合处理这种需求。步骤如下:

  1. 存储点赞量

• 每条评论的点赞量作为 score,评论的唯一 ID 作为 member。

• 使用 ZADD 命令将评论添加到 Sorted Set 中。

• 如:ZADD comment_likes 42 comment_id_1。

  1. 更新点赞量

• 每次点赞时,用 ZINCRBY 更新 score 值:

ZINCRBY comment_likes 1 comment_id_1

  1. 获取 Top 100

• 使用 ZREVRANGE,按分数降序获取前 100 名:

ZREVRANGE comment_likes 0 99 WITHSCORES

优点:查询效率为 O(log(N) + M),N 是集合大小,M 是结果数量(100)。

缺点:Redis 内存有限,适合中等规模数据场景。

2. 数据库查询优化

如果数据量特别大,Redis 无法容纳所有数据,可以在数据库中通过索引和分页优化:

  1. 点赞量字段建立索引