MST
星途 面试题库

面试题:缓存设计之常见缓存过期策略对命中率影响

请阐述常见的缓存过期策略(如定时过期、惰性过期等),并分析它们在不同业务场景下对缓存命中率会产生怎样的影响?
48.2万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

常见缓存过期策略

  1. 定时过期:为每个缓存设置一个固定的过期时间,当到达该时间时,无论该缓存项是否被访问,都会被自动删除。
  2. 惰性过期:缓存项不主动设置过期时间,只有在访问缓存项时,才检查该缓存项是否过期。如果过期,则删除该缓存项,并返回空值或重新加载数据。
  3. 定期过期:每隔一段时间,检查一部分缓存项,删除其中过期的缓存项。

不同策略对缓存命中率的影响

  1. 定时过期
    • 业务场景:适用于数据变化频率较高且对数据实时性要求严格的场景,如股票价格、汇率等。
    • 对命中率影响:在过期时间到达前,命中率较高。但过期时间一到,缓存项被删除,后续访问会导致缓存未命中,命中率急剧下降。
  2. 惰性过期
    • 业务场景:适用于数据访问频率较高,且对数据实时性要求相对较低的场景,如新闻资讯、文章内容等。
    • 对命中率影响:只要缓存项被频繁访问,就不会过期,命中率较高。但如果缓存项长时间未被访问,过期后首次访问会导致缓存未命中,不过由于惰性过期策略不会主动删除过期缓存,可能会占用较多内存。
  3. 定期过期
    • 业务场景:介于定时过期和惰性过期之间,适用于对内存占用有一定要求,同时对数据实时性有一定程度要求的场景,如商品库存信息等。
    • 对命中率影响:定期检查过期缓存并删除,能在一定程度上控制内存占用。由于不是所有缓存项同时过期,所以缓存命中率不会像定时过期那样急剧下降,但在定期检查时,部分过期缓存被删除,可能会导致命中率有所波动。