MST

星途 面试题库

面试题:Redis与MySQL结合时,如何处理缓存穿透问题

在基于Redis与MySQL结合实现高效数据处理架构中,缓存穿透是一个常见问题。请描述什么是缓存穿透,以及至少两种可以解决缓存穿透的方法,并简要说明每种方法的原理。
47.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

什么是缓存穿透

缓存穿透指的是查询一个一定不存在的数据,由于缓存中没有,所以每次都会查询数据库,若有大量这样的请求,会给数据库造成巨大压力,甚至导致数据库崩溃。

解决方法及原理

  1. 布隆过滤器(Bloom Filter) 原理:布隆过滤器是一个很长的二进制向量和一系列随机映射函数。当一个元素被加入集合时,通过多个哈希函数将其映射到布隆过滤器的不同位置,并将这些位置的二进制值置为1。查询时,元素通过同样的哈希函数映射到布隆过滤器的相应位置,如果这些位置的值不全为1,则该元素一定不存在;如果全为1,则该元素可能存在。使用布隆过滤器可以在查询数据库前快速判断数据是否存在,避免对不存在数据的无效数据库查询。
  2. 缓存空值 原理:当查询数据库发现数据不存在时,也将这个空值结果缓存起来,并设置一个较短的过期时间。这样下次再查询同样不存在的数据时,直接从缓存中获取空值,而不会查询数据库,减少数据库压力。但要注意设置合适的过期时间,避免长时间缓存空值影响正常数据更新。