Redis实现滚动周榜|滚动榜单|直播间榜单|排行榜|Redis实现日榜03

    滚动排行榜与一般排行榜的最大区别在于数据的存储和查询方式。在一般排行榜中,起始点是固定的,例如某一周或某一个月,存储和查询时的时间范围也是固定的。而滚动排行榜则不同,在滚动排行榜中,榜单的取值范围是随着时间的变化而不断变化的。

对于常用的Redis实现方案来说,如果是固定排行榜,我们只需要在每个固定的时间点将数据存入相应的Key中,查询时只需使用一条命令即可获取。因为在同一时间段内的任何一天都属于同一个周期。

然而,对于滚动排行榜,比如近7天榜,每次查询时都需要对今天及前6天的数据进行聚合计算才能得到最新的排行榜结果。在这种情况下,仅仅使用固定的Key无法解决问题,因为数据的存储和查询方式都需要特殊处理,以确保数据能够快速可用。

具体来说,在实现滚动排行榜时,我们可以采取以下策略:

1.存储方式:使用有序集合 (Sorted Set)存储每个时间点的排行榜数据,按照时间顺序存储,最新的数据排在前面。

2.数据更新:每次有新的数据需要加入排行榜时,先将其存入相应的时间点的有序集合中,然后根据设定的时间范围删除过期的数据,以保持榜单数据的更新和滚动。

3.查询方式:为了获得近7天(或其他时间范围)的排行榜数据,需要将对应时间范围内所有的Sorted Set进行聚合操作,计算出最终的排名结果。

通过这种存储和查询方式,我们能够实现滚动排行榜的功能。但是需要注意,在查询时由于需要对多个有序有序进行聚合计算,可能会对性能造成一定的影响,因此在实际实现中需要进行优化,例如增量计算、缓存等手段来提高查询效率。

实现有序集合的第一种方式:

        1. 同时写n天的滚动榜单

实现一个同步写n天滚动榜单的方法,可简单地理解为与固定榜单的实现方式相同。以Redis实现7天滚动方式为例,假设我们每天使用礼物排行榜的键值为"gift_list_cache:20230101",类型选择有序集合 (ZSet)。每当用户获得一个礼物,其对应的价值就会增加,最终用于统计排行榜上主播的总收礼情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值