面试题答案
一键面试常见缓存策略
- LRU(最近最少使用):
- 对视频流加载延迟的影响:当缓存满时,移除最近最少使用的视频片段。如果最近经常播放的视频片段能留在缓存中,后续再次播放相同片段时,加载延迟会显著降低。但如果播放模式突然改变,之前常用片段不再使用,而新片段不在缓存,就会增加加载延迟。
- 优点:实现相对简单,在很多场景下能有效缓存热点数据。对于具有时间局部性的视频播放行为(用户倾向于重复观看近期看过的内容)效果较好。
- 缺点:可能会把一些虽然不经常访问但未来可能会被大量访问的冷数据移除,例如一些经典老视频突然因某个热点事件而被大量观看,若之前因长时间未访问被LRU移除,就需重新从源获取,增加延迟。
- LFU(最不经常使用):
- 对视频流加载延迟的影响:根据数据的访问频率来决定是否移除缓存数据。高频访问的视频片段会一直保留在缓存中,这对于那些持续热门的视频流,能保持较低的加载延迟。但如果某个视频片段的热度变化很快,LFU可能无法及时适应,新热门片段可能因访问频率暂时较低而不能及时进入缓存,导致加载延迟增加。
- 优点:更关注数据的长期访问频率,对于长期热门的视频内容缓存效果好,能有效减少热门视频的加载延迟。
- 缺点:实现相对复杂,需要记录每个数据的访问频率。而且初始阶段数据访问频率都低,容易误删未来可能热门的数据;同时,对于突发热门的内容反应不够灵敏。
- FIFO(先进先出):
- 对视频流加载延迟的影响:按照数据进入缓存的先后顺序,当缓存满时,移除最早进入缓存的视频片段。如果视频流的播放具有顺序性且稳定,FIFO可以保证缓存中始终是近期顺序播放所需的数据,加载延迟低。但如果播放顺序混乱或者有跳跃式播放,可能导致有用的数据被过早移除,增加加载延迟。
- 优点:实现简单,只需要记录数据进入缓存的时间顺序。对于顺序性强的视频播放场景(如连续剧按集顺序播放)有较好效果。
- 缺点:不考虑数据的访问频率和近期使用情况,可能会移除仍然频繁使用的热点数据,即使它是较早进入缓存的,从而增加加载延迟。
- Random(随机替换):
- 对视频流加载延迟的影响:当缓存满时,随机选择一个视频片段移除。其效果较为随机,如果随机移除的恰好是后续需要的片段,就会增加加载延迟;若移除的是无用片段,则对加载延迟影响不大。
- 优点:实现极其简单,不需要额外记录数据的使用频率或进入时间等信息。
- 缺点:完全随机,缺乏对数据访问模式的针对性,可能经常移除有用数据,导致加载延迟不稳定,在大多数实际场景下性能不如其他策略。