【原创】使用热冷缓存解决大数据统计更新的问题

【原创】使用热冷缓存解决大数据统计更新的问题

1、问题描述:例如抖音上面,我需要统计不同类型的短视频数量、评论量、点赞量、分享量,例如说舞蹈,舞蹈类型的下面有多少个短视频,总计有多少评论量、点赞量、分享量等,可见,这不是读取一张数据表能统计的出来的,需要多张表,有可能还牵涉到跨库的操作,需要一个后台脚本来执行,而且数据结果也不是马上就能显示出来的,我需要把这些数据展示出来,而且还属于秒开的那种,这个时候怎么解决这个问题呢?

2、解决方案:冷热缓存

3、实现策略:

(1)创建冷缓存key:用来保存不同种类的短视频统计数据,例如shortVideo_stat_dance_forever【永久缓存】,使用hash存储舞蹈下面的统计数据,缓存失效时间为-1,即永久缓存;

(2)创建热缓存key:同样用来保存不同种类的短视频统计数据,例如shortVideo_stat_dance_hot【临时缓存】,使用hash存储舞蹈下面的统计数据,缓存失效时间1分钟~1天不等,具体视该种类下面短视频的数量、脚本执行的时间来定,短视频数量越少,脚本执行时间越短,缓存失效时间越短,这样可以保证数据的实时更新;

(3)查询策略:首先请求热缓存数据,如果热缓存数据中有数据的话,就直接返回数据,如果热缓存中没有数据,将请求添加到缓存队列shortVideoExecList中【’dance’=>1,1代表待执行,2代表正在执行,存在的话,则不再添加】,同时获取永久缓存,并将数据返回给用户;

(4)更新策略:专门的脚本执行缓存队列,每1分钟执行一次,处于异步更新状态,执行过程中,先修改脚本脚本中该标识缓存key的状态,修改为2,表示待执行,后面再重新执行脚本的时候,如果状态为2,代表正在执行,则不予执行,只执行状态为1的即可,执行完毕之后,同时更新冷热缓存数据,并删除待执行队列中的缓存key即可。

4、最终结果:以上策略就完美的解决了大数据统计展示的问题了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据