目 录CONTENT

文章目录

面试题-缓存与其淘汰算法详解

在等晚風吹
2024-12-13 / 0 评论 / 0 点赞 / 13 阅读 / 0 字 / 正在检测是否收录...

面试题-缓存与其淘汰算法详解

目录

  1. 缓存与淘汰算法概述
  2. 缓存的特征
  3. 缓存分类与应用场景
  4. 缓存常见问题
  5. 总结

缓存与淘汰算法概述

在现代互联网应用中,为了提高系统性能并降低数据源的压力,引入缓存成为必然选择。缓存是存储频繁访问数据的临时位置,可以有效减少对数据库或其他存储系统的直接访问。

缓存的核心概念是命中率淘汰策略。当缓存空间有限时,需要通过策略清理旧数据,为新数据腾出空间。


缓存的特征

命中率

命中率 = 返回正确结果数 / 请求缓存次数
高命中率是衡量缓存效果的重要指标。通过优化缓存数据和调整策略,可以提高命中率。

最大元素(或最大空间)

缓存可以存储的最大元素数量或数据空间。超出限制时,需要触发清理策略释放空间。

清空策略

当缓存满时,需要通过清空策略来决定淘汰哪些数据。常见的策略有:

  1. FIFO(First In, First Out)

    • 清理最早存入缓存的数据。
    • 适用于数据时效性要求高的场景。
  2. LFU(Least Frequently Used)

    • 清理访问频率最低的数据。
    • 适用于频繁访问的热点数据场景。
  3. LRU(Least Recently Used)

    • 清理最近最少访问的数据。
    • 适用于数据访问有明显热点的场景。
  4. 其他策略

    • 随机清理。
    • 清理即将过期的数据。

缓存分类与应用场景

本地缓存

本地缓存直接存储在应用服务器内存中,适用于对性能要求较高且数据量较小的场景。

  • 示例:编程实现缓存、Ehcache。

分布式缓存

分布式缓存将缓存部署在独立的集群中,适用于大规模、高并发场景。

  • 示例:Memcached、Redis。

缓存常见问题

缓存雪崩

缓存同时失效,导致大量请求直接涌入数据库,可能引发系统崩溃。
解决方法

  • 设置缓存过期时间时加随机值,避免集中失效。
  • 使用多级缓存架构。

缓存穿透

缓存和数据库都没有目标数据,导致所有请求都直接到达数据库。
解决方法

  • 对不存在的请求结果设置默认缓存。
  • 使用布隆过滤器拦截非法请求。

缓存预热

缓存刚启动时,没有加载热点数据,导致大量缓存未命中。
解决方法

  • 缓存系统启动时预加载热点数据。

缓存更新

缓存数据与实际数据不同步的问题。
解决方法

  • 设置合理的缓存过期时间。
  • 使用消息队列实现数据同步。

缓存降级

在缓存失效或系统压力过大时,临时关闭缓存服务。
解决方法

  • 降级时返回静态数据或部分默认数据。

总结

缓存作为系统性能优化的重要手段,需要根据实际场景选择合适的策略和实现方式。理解缓存的原理及其常见问题,有助于构建稳定、高效的系统。

0

评论区