假设我们有一个高流量项目(一个地铁站点),它应该使用这个选项(不是实时)提供排序。视频数量约为 200K,有关视频的所有信息都存储在 MySQL 中。每日视频观看次数约为 1.5KK。作为工具,我们有硬盘驱动器(文本文件)、MySQL、Redis。
Views
top viewed
top viewed last 24 hours
top viewed last 7 days
top viewed last 30 days
top rated last 365 days
我应该如何存储这些信息?
第一个想法是记录对文本文件的所有访问(每小时单个文件,例如visit_20080101_00.log)。在每小时开始计算前一小时每个视频的观看次数,并将此信息插入 MySQL。然后重新计算总计(过去 24 小时)并更新表中的统计信息。在每一天的开始,我们必须做同样的事情,但要重新计算过去 7 天、过去 30 天、过去 365 天。这种方法对我来说似乎很糟糕,因为我们必须为每个视频存储过去 365 天的信息才能进行正确的计算。
有没有其他好的方法?也许,我们必须为此选择另一种乐器?
谢谢你。