面试题答案
一键面试常用缓存失效策略
- 定时失效:为每个缓存数据设置一个固定的过期时间。例如设置用户登录信息缓存30分钟过期。
- 基于事件失效:当数据库中用户行为数据发生变化(如新增、修改、删除)时,主动使对应的缓存数据失效。比如用户发表了新评论,就将包含该用户评论列表的缓存数据失效。
- LRU(最近最少使用):当缓存达到最大容量时,移除最近最少使用的数据。例如在一个高并发的社交平台,用户行为数据量庞大,缓存空间有限,使用LRU策略淘汰长时间未被访问的用户行为缓存数据。
不同策略对用户行为数据查询的影响
- 定时失效
- 优点:实现简单,可控制缓存数据在一定时间后更新,保证数据的相对新鲜度。例如在一个电商平台,用户浏览商品的行为数据缓存设置1小时过期,即使数据在这1小时内有更新,也能维持相对稳定的查询性能,不会因频繁更新缓存导致性能开销过大。
- 缺点:可能在过期时间内数据已发生变化,查询到的不是最新数据。如社交平台用户刚发布新动态,但由于缓存未过期,其他用户查询时看不到这条新动态。
- 基于事件失效
- 优点:能保证缓存数据与数据库数据实时一致。在银行系统中,用户资金变动行为数据发生改变时,立即让相关缓存失效,确保后续查询到的是准确的资金信息。
- 缺点:实现相对复杂,对数据库的写操作会增加额外的缓存失效处理逻辑。如果高并发下处理不当,可能会导致缓存雪崩等问题。
- LRU
- 优点:能优先保留热点数据在缓存中,提高缓存命中率。在短视频平台,热门视频的用户点赞、评论等行为数据频繁被查询,使用LRU策略能保证这些热点数据一直在缓存中,快速响应查询请求。
- 缺点:可能会将一些偶尔但重要的用户行为数据淘汰。例如某个小众兴趣社区,一些低频但关键的用户行为数据(如特定小众话题的讨论记录)可能因长时间未被访问而被LRU策略淘汰,再次查询时需要从数据库读取。