面试题答案
一键面试1. 调整缓存大小
- 工作原理:增大缓存容量可以容纳更多的数据。当应用请求数据时,更多的数据可能已经存在于缓存中,从而提高命中率。例如,对于经常访问的热门数据,较大的缓存空间能保证这些数据较长时间驻留在缓存内,减少从后端存储(如磁盘)读取的次数。
2. 优化缓存淘汰策略
- LRU(最近最少使用)
- 工作原理:LRU 策略假设最近最少使用的数据在未来被访问的可能性也较低。当缓存已满需要淘汰数据时,LRU 会移除最近一段时间内使用次数最少的数据。比如有一个新闻网站,用户经常浏览最新发布的新闻,对于较早发布且长时间未被再次访问的新闻,按照 LRU 策略,在缓存空间紧张时会优先被淘汰,以给新的热门新闻数据腾出空间。
- LFU(最不经常使用)
- 工作原理:LFU 策略根据数据的访问频率来决定淘汰对象。它认为访问频率低的数据在未来被访问的可能性也低。例如在一个电商网站的商品详情页缓存中,对于那些很少有人点击查看详情的商品数据,如果缓存已满,按照 LFU 策略,这些低访问频率的商品数据会优先被淘汰。
3. 数据预取
- 工作原理:根据应用的访问模式和规律,提前将可能被访问的数据加载到缓存中。例如,在一个视频网站中,用户通常在看完一个视频后会接着观看相关推荐视频,系统可以根据这种模式,在用户观看当前视频时,提前将推荐视频的相关元数据(如视频简介、封面等)预取到缓存中,当用户点击推荐视频时,这些数据就能直接从缓存获取,提高缓存命中率。
4. 合理设置缓存过期时间
- 工作原理:对于经常变化的数据,设置合适的较短过期时间,确保缓存中的数据与后端存储的数据保持一致,避免返回过期数据。对于相对稳定的数据,设置较长的过期时间,减少从后端存储重新读取的次数。比如在一个天气预报应用中,天气数据可能每小时更新一次,那么缓存中的天气数据过期时间可设置为接近 1 小时,在这个时间内用户获取天气数据都从缓存读取,提高命中率;而对于一些城市基本信息(如城市名称、经纬度等很少变化的数据),可设置很长的过期时间。