什么是缓存穿透、缓存击穿、缓存雪崩?如何预防?
一、什么是缓存穿透,如何预防?
缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,请求直接打在了数据库上。
对于缓存穿透的话一般来说只需要针对空值缓存就行,过期时间设置5-10分钟,这样就流量就不会打在数据库上导致死机宕机。
二、什么是缓存击穿,如何预防?
缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。
缓存击穿的话,设置热点数据永远不过期。或者加上互斥锁就能搞定了。
二、什么是缓存雪崩,如何预防?
缓存雪崩,是指在某一个时间段,缓存集中过期失效。
雪崩其实也可以做到提前预防,那就是用到过期时间的key,时间全部错开,此外,有些数据可以做永久保存的话那就直接保存好了,这样就不会造成大面积的key失效了。
1.永不过期
比如某些热点数据可以设置永不过期。
2.过期时间错开
处理缓存雪崩简单,在批量往Redis存数据的时候,把每个Key的失效时间都加个随机值就好了,这样可以保证数据不会在同一时间大面积失效。
如果Redis是集群部署,将热点数据均匀分布在不同的Redis库中也能避免全部失效的问题。
setRedis(Key,value,time + Math.random() * 10000)
3.多缓存结合
Redis结合ehcache或者memcached,先查redis再查memcached。
以上是 什么是缓存穿透、缓存击穿、缓存雪崩?如何预防? 的全部内容, 来源链接: utcz.com/z/509141.html