面试题答案
一键面试缓存穿透定义
缓存穿透指的是客户端请求的数据在缓存中不存在,并且在数据库中也不存在,导致请求每次都绕过缓存直接访问数据库。
缓存穿透对系统的影响
- 性能下降:大量无效请求直接打到数据库,增加数据库负载,可能导致数据库响应变慢,影响整个系统的性能。
- 可用性降低:数据库承受过高压力时,可能会出现宕机等情况,导致系统不可用。
常见解决方案
- 布隆过滤器:在缓存之前加一层布隆过滤器,先对请求的数据进行过滤。布隆过滤器判断数据不存在时,就直接返回,不再查询数据库。当判断数据存在时,再去查询缓存和数据库。布隆过滤器存在一定的误判率,但误判率可以通过调整参数控制在较低水平。
- 缓存空值:当查询数据库发现数据不存在时,将空值也缓存起来,并设置一个较短的过期时间。下次相同请求时,先从缓存中获取到空值,直接返回,避免再次查询数据库。但要注意过期时间的设置,避免长时间占用缓存空间。