redis之缓存穿透、缓存击穿和缓存雪崩

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

【redis之缓存穿透、缓存击穿和缓存雪崩】


    推荐阅读