面试题答案
一键面试什么是缓存穿透
缓存穿透指的是查询一个一定不存在的数据,由于缓存中没有,所以每次都会查询数据库,若有大量这样的请求,会给数据库造成巨大压力,甚至导致数据库崩溃。
解决方法及原理
- 布隆过滤器(Bloom Filter) 原理:布隆过滤器是一个很长的二进制向量和一系列随机映射函数。当一个元素被加入集合时,通过多个哈希函数将其映射到布隆过滤器的不同位置,并将这些位置的二进制值置为1。查询时,元素通过同样的哈希函数映射到布隆过滤器的相应位置,如果这些位置的值不全为1,则该元素一定不存在;如果全为1,则该元素可能存在。使用布隆过滤器可以在查询数据库前快速判断数据是否存在,避免对不存在数据的无效数据库查询。
- 缓存空值 原理:当查询数据库发现数据不存在时,也将这个空值结果缓存起来,并设置一个较短的过期时间。这样下次再查询同样不存在的数据时,直接从缓存中获取空值,而不会查询数据库,减少数据库压力。但要注意设置合适的过期时间,避免长时间缓存空值影响正常数据更新。