类似微博抖音评论分页的简单设计与实现

最近在做一个评论分页的实际问题

假设以点赞数排序, 有page_index ,以及 每个评论有个id

我们假设以每一页的最后一个id在zset中的rank作为left , rank+page_size 为right, 那么

对于实时的分页来说,存在这么一个问题

假设前端已经获取了列表1:

comment-1

comment-2

comment-3

comment-4

comment-5

当c5 和 c4 的位置发生了变换时,c4 会重复出现一次,这是问题1 

假设有

page_1:

c1

c2

c3

c4

c5

page_2:

c6

c7

c8

c9

c10

现在假如c5 和c8交换了位置,那么c6、c7 就丢失掉了。这是问题2

同理如果只以page_index 和 page_index 分页也会有类似的问题

 

 

想了一个解决方案:我们必须引入 点赞数x,且需要对点赞数相同的评论做一个id的排序

前端需要传一个id + 点赞数x,

我们需要维护的数据结构是: 点赞数第一优先级、id作为第二优先级(简单的实现方式可以是 score=点赞数.id )

获取到x 之后,我们可以先判断这个点赞数的位置,再根据id 去往后筛选page_size 个评论。

但这样存在一个问题就是:

如果该评论c5被取消点赞了,导致排名下降了很多,那么他在后面又会出现一次,如果是在page_index +

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值