MST

星途 面试题库

面试题:缓存设计 - 缓存穿透问题及解决方案

在后端开发中,缓存穿透是常见的问题,请阐述什么是缓存穿透,它可能带来的危害,并列举至少两种常见的解决方案及其原理。
15.3万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

缓存穿透定义

缓存穿透指客户端请求的数据在缓存和数据库中都不存在,每次请求都会直接穿透到数据库,导致数据库压力增大。

可能带来的危害

  1. 数据库压力剧增:大量无效请求直接访问数据库,可能使数据库性能下降甚至崩溃。
  2. 服务可用性降低:数据库压力过大可能导致响应变慢,影响整个服务的可用性,引发连锁反应影响其他业务。

常见解决方案及其原理

  1. 布隆过滤器
    • 原理:布隆过滤器是一种概率型数据结构,它由一个位数组和多个哈希函数组成。当一个元素加入布隆过滤器时,通过多个哈希函数将该元素映射到位数组的不同位置并置为1。查询时,对元素进行相同的哈希计算,若对应位置不全为1,则该元素一定不存在;若全为1,则该元素大概率存在。在缓存穿透场景下,在请求到达数据库前,先经过布隆过滤器判断,如果过滤器判定不存在,则直接返回,不再查询数据库,避免无效请求穿透到数据库。
  2. 缓存空值
    • 原理:当查询数据库发现数据不存在时,将空值(如null)也存入缓存,并设置一个较短的过期时间。后续相同请求先查询缓存,发现为空值直接返回,避免再次查询数据库。较短过期时间是为了防止数据新增后,缓存中仍为空值而无法获取新数据。