几个缓存概念
面试经常问的几个关于缓存的概念问题
缓存穿透
获取数据的流程是先获取缓存,如果缓存没有再去数据库。如果查询的数据在缓存和数据库中都没有,那么这个请求就会一直会请求数据库给数据库造成压力,这个就是缓存穿透。
解决办法
- 缓存控制,在数据库获取数据为空的时候也缓存
- 采用布隆过滤器
缓存击穿
大量的请求同时请求同一个key,此时这个key刚好失效了,导致了所有的请求都直接打到后端的数据库上面。
解决办法
- 使用互斥锁。
- 在缓存失效的时候不是立即去数据库取数据, 而是加一下互斥锁,拿到锁之后再判断是否有缓存,如果没有再去数据库取数据。
缓存雪崩
缓存雪崩是指多个key在同一个时间过期,造成压力忽然增高
解决办法
解决的方法是通过给key的失效时间增加一个随机值