面试题答案
一键面试常见缓存过期策略
- 定时过期:为每个缓存设置一个固定的过期时间,当到达该时间时,无论该缓存项是否被访问,都会被自动删除。
- 惰性过期:缓存项不主动设置过期时间,只有在访问缓存项时,才检查该缓存项是否过期。如果过期,则删除该缓存项,并返回空值或重新加载数据。
- 定期过期:每隔一段时间,检查一部分缓存项,删除其中过期的缓存项。
不同策略对缓存命中率的影响
- 定时过期
- 业务场景:适用于数据变化频率较高且对数据实时性要求严格的场景,如股票价格、汇率等。
- 对命中率影响:在过期时间到达前,命中率较高。但过期时间一到,缓存项被删除,后续访问会导致缓存未命中,命中率急剧下降。
- 惰性过期
- 业务场景:适用于数据访问频率较高,且对数据实时性要求相对较低的场景,如新闻资讯、文章内容等。
- 对命中率影响:只要缓存项被频繁访问,就不会过期,命中率较高。但如果缓存项长时间未被访问,过期后首次访问会导致缓存未命中,不过由于惰性过期策略不会主动删除过期缓存,可能会占用较多内存。
- 定期过期
- 业务场景:介于定时过期和惰性过期之间,适用于对内存占用有一定要求,同时对数据实时性有一定程度要求的场景,如商品库存信息等。
- 对命中率影响:定期检查过期缓存并删除,能在一定程度上控制内存占用。由于不是所有缓存项同时过期,所以缓存命中率不会像定时过期那样急剧下降,但在定期检查时,部分过期缓存被删除,可能会导致命中率有所波动。