一、缓存穿透
1.何为缓存穿透?
缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。
2.缓存穿透解决方案
1)布隆过滤器拦截不存在的请求
2)redis缓存不存在的值
3)按照业务需要,设定规则直接进行拦截,比如用户id,要求id>0
二、缓存击穿
1.何为缓存击穿?
缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。
2.缓存击穿解决方案
1)设置数据永远不过期
2)加分布式锁,单线程查询数据库
三、缓存雪崩
1.何为缓存雪崩?
缓存雪崩,是指在某一个时间段,缓存集中过期失效。
2.缓存雪崩解决方案
1)缓存数据的过期时间设置为随机值
2)数据设置永不过期