MST

星途 面试题库

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

在大数据处理的缓存设计场景中,缓存穿透是一个常见问题。请阐述什么是缓存穿透,它会对系统造成哪些影响,以及你所知道的常见解决方案有哪些?
25.3万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

缓存穿透定义

缓存穿透指的是客户端请求的数据在缓存中不存在,并且在数据库中也不存在,导致请求每次都绕过缓存直接访问数据库。

缓存穿透对系统的影响

  1. 性能下降:大量无效请求直接打到数据库,增加数据库负载,可能导致数据库响应变慢,影响整个系统的性能。
  2. 可用性降低:数据库承受过高压力时,可能会出现宕机等情况,导致系统不可用。

常见解决方案

  1. 布隆过滤器:在缓存之前加一层布隆过滤器,先对请求的数据进行过滤。布隆过滤器判断数据不存在时,就直接返回,不再查询数据库。当判断数据存在时,再去查询缓存和数据库。布隆过滤器存在一定的误判率,但误判率可以通过调整参数控制在较低水平。
  2. 缓存空值:当查询数据库发现数据不存在时,将空值也缓存起来,并设置一个较短的过期时间。下次相同请求时,先从缓存中获取到空值,直接返回,避免再次查询数据库。但要注意过期时间的设置,避免长时间占用缓存空间。