面试题答案
一键面试缓存穿透的定义
缓存穿透指的是查询一个根本不存在的数据,由于缓存中没有,所以直接查询数据库,而数据库也没有该数据,导致每次请求都会穿透到数据库,若有大量这样的请求,会给数据库带来巨大压力,甚至导致数据库崩溃。
解决缓存穿透问题的方法及原理
- 布隆过滤器(Bloom Filter)
- 原理:布隆过滤器是一种概率型数据结构,它通过多个哈希函数将一个元素映射到位数组的不同位置并置为1。当查询一个元素时,只要这些位置中有一个不为1,就可以判断该元素一定不存在;如果这些位置都为1,则该元素可能存在。在使用布隆过滤器解决缓存穿透问题时,在数据写入数据库时,同时将数据的键添加到布隆过滤器中。查询时,先通过布隆过滤器判断数据是否存在,若不存在直接返回,不再查询数据库,从而避免无效查询穿透到数据库。
- 缓存空值
- 原理:当查询数据库发现数据不存在时,将这个空值缓存起来,并设置一个较短的过期时间。下次再查询同样的数据时,先从缓存中获取,若缓存中有(空值),直接返回,不再查询数据库。这样可以防止对不存在数据的持续穿透查询,但设置过期时间很重要,防止长时间占用缓存空间。