几个缓存概念
hanpy

面试经常问的几个关于缓存的概念问题

缓存穿透

获取数据的流程是先获取缓存,如果缓存没有再去数据库。如果查询的数据在缓存和数据库中都没有,那么这个请求就会一直会请求数据库给数据库造成压力,这个就是缓存穿透。

解决办法

  1. 缓存控制,在数据库获取数据为空的时候也缓存
  2. 采用布隆过滤器

缓存击穿

大量的请求同时请求同一个key,此时这个key刚好失效了,导致了所有的请求都直接打到后端的数据库上面。

解决办法

  1. 使用互斥锁。
  2. 在缓存失效的时候不是立即去数据库取数据, 而是加一下互斥锁,拿到锁之后再判断是否有缓存,如果没有再去数据库取数据。

缓存雪崩

缓存雪崩是指多个key在同一个时间过期,造成压力忽然增高

解决办法

解决的方法是通过给key的失效时间增加一个随机值